QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#647194#8354. T2songziyan0 1180ms91580kbC++141.2kb2024-10-17 12:35:202024-10-17 12:35:20

Judging History

你现在查看的是最新测评结果

  • [2024-10-17 12:35:20]
  • 评测
  • 测评结果:0
  • 用时:1180ms
  • 内存:91580kb
  • [2024-10-17 12:35:20]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
char buf[1<<22],*p1,*p2;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<22,stdin),p1==p2)?0:*p1++)
inline int read(){
    int x=0,f=1;char ch=getchar();
    while(!isdigit(ch))f=(ch=='-')?-1:1,ch=getchar();
    while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
    return x*f;
}
const int N=2e6+5;
int n,K,q,B,op[5005],x[5005],ans[5005],f[N],g[N],p[N],v[N],t[N],vis[N];
void add1(int i){for(int j=K;j>=t[i];j--)f[j]=max(f[j],f[j-t[i]]+v[i]);}
void add2(int i){for(int j=K/p[i];j>=v[i];j--)if(g[j-v[i]]+t[i]<=K)g[j]=min(g[j],g[j-v[i]]+t[i]);}
signed main(){
    n=read();q=read();K=read();B=sqrt(n+q);
    for(int i=1;i<=n;i++)p[i]=read(),v[i]=read(),t[i]=p[i]*v[i];
    for(int i=1;i<=q;i++)op[i]=read(),x[i]=read(),vis[x[i]]=op[i]==1;
    memset(f,-0x3f,sizeof(f));f[0]=0;
    memset(g,0x3f,sizeof(g));g[0]=0;
    for(int i=1;i<=n;i++)if(!vis[i]){if(p[i]<=B)add1(i);else add2(i);}
    for(int i=q;i>=1;i--)
        if(op[i]==1){if(p[x[i]]<=B)add1(x[i]);else add2(x[i]);}
        else{int &res=ans[i];for(int j=x[i]/B;j>=0;j--)if(x[i]>=g[j])res=max(res,f[x[i]-g[j]]+j);}
    for(int i=1;i<=q;i++)if(op[i]==2)printf("%lld\n",ans[i]);
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 3ms
memory: 41584kb

input:

3205 5000 5000
1 1
2 1
3 1
7 1
8 1
9 1
10 1
11 1
12 2
13 1
14 2
16 1
17 2
20 3
22 1
24 1
26 2
27 1
30 1
32 2
33 1
34 1
41 1
44 2
49 2
51 1
54 2
58 2
61 2
65 2
66 1
68 2
70 1
71 2
72 2
74 8
75 3
76 5
77 1
78 7
79 5
80 5
81 1
82 2
84 1
86 6
87 6
88 3
89 9
90 5
91 1
92 2
93 3
95 7
96 2
97 2
98 8
99 8
1...

output:

85
73
34
43
46
95
34
87
47
54
96
74
57
70
86
54
72
63
91
41
71
74
83
49
54
69
92
47
40
79
32
67
77
7
57
61
79
21
47
54
50
39
77
59
32
46
82
79
50
84
70
91
39
23
78
25
92
41
72
57
61
29
50
63
60
73
30
89
28
45
68
63
38
64
6
45
38
78
67
58
91
77
88
63
42
41
49
52
94
73
66
25
86
88
33
89
60
92
85
84
70...

result:

wrong answer 1st lines differ - expected: '81', found: '85'

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 1180ms
memory: 77952kb

input:

1277351 1 2000000
2 2
5 1
7 3
8 4
10 1
12 1
15 2
16 1
18 1
22 1
25 1
28 3
29 1
32 1
35 1
36 1
38 2
40 1
41 2
42 1
43 2
44 2
45 1
48 1
49 1
50 2
54 2
55 2
56 1
58 2
59 2
60 2
62 1
66 1
68 3
69 1
70 3
72 2
76 1
78 1
79 2
81 2
82 3
84 2
85 1
86 2
89 1
90 2
91 2
92 1
93 1
96 3
98 3
99 2
100 3
101 1
102 ...

output:

1770

result:

wrong answer 1st lines differ - expected: '1771', found: '1770'

Subtask #3:

score: 0
Wrong Answer

Test #21:

score: 0
Wrong Answer
time: 122ms
memory: 56436kb

input:

5000 5000 2000000
1 1
2 1
3 1
4 1
6 1
7 1
8 1
9 1
10 1
11 1
14 1
15 3
17 2
18 2
21 1
22 1
24 1
25 3
27 1
28 2
29 1
30 1
31 1
32 1
33 1
34 1
35 1
37 1
38 1
39 1
40 2
41 2
43 1
45 1
47 1
49 1
50 1
51 1
54 1
55 1
56 1
61 1
62 2
64 1
65 1
67 2
68 2
70 2
72 2
74 1
76 3
79 2
82 4
83 2
84 1
88 1
91 1
92 1
...

output:

1674
590
932
686
980
0
695
1448
1594
461
1633
1470
1321
1335
1024
1624
768
1303
0
1711
811
949
1652
1602
1673
1308
1429
1350
811
1382
1518
1483
966
163
0
0
1389
1400
619
1514
960
1254
0
887
925
390
1505
895
1256
1268
1075
1289
1331
0
384
1592
457
565
1645
1651
0
1047
1527
468
1564
1367
1599
0
693
64...

result:

wrong answer 1st lines differ - expected: '1778', found: '1674'

Subtask #4:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 50ms
memory: 52156kb

input:

191299 5000 300000
1 1
5 1
6 2
7 1
8 1
10 1
11 2
12 2
17 1
18 1
19 1
20 1
21 1
22 2
25 1
28 1
29 2
30 1
31 2
34 1
36 1
37 1
38 1
40 1
42 1
43 1
44 1
45 1
47 2
48 1
51 1
53 3
54 2
56 2
58 2
59 2
61 2
63 4
64 2
67 1
68 2
69 2
70 1
72 1
76 1
77 1
78 1
80 2
83 1
84 1
87 1
88 1
89 1
91 2
93 1
95 1
96 1
9...

output:

221
531
204
303
706
486
662
480
540
430
356
588
406
521
570
546
403
316
279
618
128
431
492
453
578
426
642
430
569
233
97
438
698
621
646
549
567
299
626
227
365
338
432
305
546
286
631
580
574
629
667
450
679
140
273
682
607
302
323
696
193
613
557
523
516
702
544
570
355
541
389
196
260
429
296
6...

result:

wrong answer 7th lines differ - expected: '663', found: '662'

Subtask #5:

score: 0
Wrong Answer

Test #41:

score: 0
Wrong Answer
time: 491ms
memory: 91580kb

input:

1278949 5000 2000000
4 1
9 1
12 1
13 1
15 2
20 1
21 2
26 1
36 1
39 2
43 1
46 2
59 1
64 1
66 1
71 1
73 1
75 1
78 2
83 1
87 1
89 1
92 1
97 1
103 1
104 1
108 1
111 1
113 1
114 1
117 2
118 1
130 1
137 1
140 1
151 1
152 1
155 1
158 2
163 1
164 1
165 1
168 1
172 1
173 1
183 1
185 1
186 1
192 1
208 1
210 2...

output:

272
361
1207
741
550
255
1304
780
1061
187
1353
262
447
426
1378
1246
1277
390
964
1243
1483
529
1150
544
1015
713
843
468
570
1353
426
994
1174
1389
1180
655
1294
538
906
572
415
1064
1276
1234
839
746
367
1134
621
363
1457
663
465
401
1145
1358
734
1092
526
1411
929
475
382
1463
344
1061
1455
451
...

result:

wrong answer 4th lines differ - expected: '742', found: '741'