UOJ Logo

NOI.AC

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#215108#2441. 物品fddwd1002327ms37468kbC++11994b2024-11-26 19:09:122024-11-26 23:01:07

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define MAXN 500010
#define pint pair<int,int>
#define fir first
#define sec second
int n,c,a[MAXN],w[MAXN];
vector<pint>spt[MAXN];
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);
	cin>>n>>c;
	for(int i=1;i<=n;++i) cin>>a[i]>>w[i],spt[a[i]].push_back({w[i],i});
	set<pint>jev;ll num1=0;
	ll ans=0,num=0;
	for(int i=n;i>=1;--i){
		for(int j=0;j<spt[i].size();++j)
			jev.insert(spt[i][j]),num1+=spt[i][j].fir;
		while(num1>c||jev.size()>i)
			num1-=(*--jev.end()).fir,jev.erase(--jev.end());
		if(ans<jev.size()) ans=jev.size(),num=i;
	}jev.clear();num1=0;
	for(int i=n;i>=num;--i){
		for(int j=0;j<spt[i].size();++j)
			jev.insert(spt[i][j]),num1+=spt[i][j].fir;
		while(num1>c||jev.size()>i)
			num1-=(*--jev.end()).fir,jev.erase(--jev.end());
	}cout<<ans<<endl<<jev.size()<<endl;
	for(auto it=jev.begin();it!=jev.end();++it)
		cout<<(*it).sec<<" ";
	cout<<endl;
	return 0;
}

Details

小提示:点击横条可展开更详细的信息

Test #1:

score: 10
Accepted
time: 0ms
memory: 12988kb

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: 3ms
memory: 12984kb

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: 3ms
memory: 13088kb

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: 2ms
memory: 13092kb

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: 3ms
memory: 13100kb

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: 172ms
memory: 22624kb

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: 205ms
memory: 22540kb

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: 597ms
memory: 34280kb

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: 680ms
memory: 36588kb

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: 662ms
memory: 37468kb

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