ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#192834 | #2441. 物品 | wosile | 100 | 708ms | 14872kb | C++11 | 1009b | 2023-10-12 11:16:45 | 2023-10-12 12:02:02 |
answer
#include<bits/stdc++.h>
using namespace std;
pair<int,int>p[500005],q[500005],tmp[500005];
typedef long long ll;
priority_queue<int>s;
ll sum=0;
int main(){
// freopen("backpack.in","r",stdin);
// freopen("backpack.out","w",stdout);
int n,C;
scanf("%d%d",&n,&C);
for(int i=1;i<=n;i++)scanf("%d%d",&p[i].first,&p[i].second);
for(int i=1;i<=n;i++)tmp[i]=p[i];
sort(p+1,p+n+1);
int ans=0,pos=n;
for(int m=n;m>=1;m--){
while(p[pos].first>=m && pos>=1){
s.push(p[pos].second);
sum+=p[pos].second;
while(sum>C){
sum-=s.top();
s.pop();
}
pos--;
}
ans=max(ans,min(m,(int)s.size()));
}
printf("%d\n%d\n",ans,ans);
int cnt=0;
for(int i=1;i<=n;i++)if(tmp[i].first>=ans)q[++cnt]=make_pair(tmp[i].second,i);
sort(q+1,q+cnt+1);
// for(int i=1;i<=cnt;i++)printf("%d %d\n",q[i].first,q[i].second);
for(int i=1;i<=ans;i++)printf("%d ",q[i].second);
// long long sum=0;
// for(int i=1;i<=ans;i++)sum+=q[i].first;
// printf("%lld",sum);
return 0;
}
Details
小提示:点击横条可展开更详细的信息
Test #1:
score: 10
Accepted
time: 6ms
memory: 12964kb
input:
18 1024 8 3 8 1 16 9 17 6 2 5 12 3 1 7 7 9 17 1 14 3 2 7 17 5 2 3 2 5 2 10 8 3 2 3 17 5
output:
8 8 2 9 1 6 10 16 12 18
result:
points 1.0 Correct
Test #2:
score: 10
Accepted
time: 0ms
memory: 12956kb
input:
20 79841 15 4337 9 6289 7 9927 12 1468 7 9390 12 9228 7 5646 8 3438 3 1614 3 7048 10 8840 15 2349 16...
output:
10 10 4 12 14 1 13 20 19 11 6 17
result:
points 1.0 Correct
Test #3:
score: 10
Accepted
time: 6ms
memory: 12980kb
input:
1888 987654 1082 243 1341 309 1524 959 324 593 894 952 1428 587 1367 91 1669 683 616 866 958 791 172...
output:
949 949 909 1341 231 335 1259 1327 873 892 1671 1070 1872 452 339 501 258 1027 793 1067 1740 665 851...
result:
points 1.0 Correct
Test #4:
score: 10
Accepted
time: 4ms
memory: 12976kb
input:
1999 12000000 1112 2799 524 6890 686 6713 1803 4478 940 4341 1391 8972 953 592 454 7711 524 8224 127...
output:
978 978 53 174 195 1092 1807 517 789 1823 1014 423 991 1060 1800 350 769 1484 1428 1739 704 795 492 ...
result:
points 1.0 Correct
Test #5:
score: 10
Accepted
time: 0ms
memory: 12976kb
input:
2000 9788123 296 3976 154 3441 78 9146 1443 6444 1799 2843 1482 6843 1526 3159 1956 9324 1442 1001 5...
output:
997 997 725 67 1669 1837 1146 694 38 223 1735 1651 1228 358 1005 811 1395 1180 1094 1150 1697 1008 1...
result:
points 1.0 Correct
Test #6:
score: 10
Accepted
time: 75ms
memory: 13824kb
input:
200000 87654321 33240 503 90721 868 64272 858 170928 616 92246 213 50575 59 148252 954 87639 739 328...
output:
100168 100168 827 2146 4948 5603 8750 9125 9544 9998 11512 13247 15591 17733 18542 19174 19851 23704...
result:
points 1.0 Correct
Test #7:
score: 10
Accepted
time: 73ms
memory: 13820kb
input:
200000 987654321 199051 7573 6332 5631 35615 9816 185684 9227 198894 8029 185684 2173 54203 2887 107...
output:
98978 98978 23020 30257 42096 74944 96841 130989 134505 162221 198760 197 26517 34552 59838 89131 93...
result:
points 1.0 Correct
Test #8:
score: 10
Accepted
time: 159ms
memory: 14868kb
input:
444444 998244353 243276 2272 436596 1761 70822 1547 263965 942 280972 2658 87160 421 268504 2945 103...
output:
222615 222615 34 18744 19606 25162 30172 42303 46580 62099 67770 69477 76984 80924 86836 91849 98390...
result:
points 1.0 Correct
Test #9:
score: 10
Accepted
time: 184ms
memory: 14872kb
input:
500000 999999999 131412 807 486292 804 462352 1139 52896 196 426775 1655 18059 2099 224414 1308 2851...
output:
254580 254580 6349 12307 13036 13189 15153 20828 29508 33948 35673 36019 40592 53258 57784 58426 638...
result:
points 1.0 Correct
Test #10:
score: 10
Accepted
time: 201ms
memory: 14868kb
input:
500000 1000000000 42362 5090 327916 7618 221602 679 295161 1419 69703 4221 108614 6788 210597 6940 2...
output:
231450 231450 11704 55924 60258 69113 117246 120758 129939 135869 142744 146074 154947 162184 169748...
result:
points 1.0 Correct