QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#647339#8354. T2songziyan0 131ms87356kbC++141.2kb2024-10-17 13:28:222024-10-17 13:28:23

Judging History

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

  • [2024-10-17 13:28:23]
  • 评测
  • 测评结果:0
  • 用时:131ms
  • 内存:87356kb
  • [2024-10-17 13:28:22]
  • 提交

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,int flg){for(int j=flg?K/p[i]:K/B;j>=v[i];j--)g[j]=min(g[j],g[j-v[i]]+t[i]);}
void trans(int i,int flg){if(p[i]<=B)add1(i);else add2(i,flg);}
signed main(){
    n=read();q=read();K=read();B=sqrt(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();
        if(op[i]==1)vis[x[i]]=1;
    }
    memset(g,0x3f,sizeof(g));g[0]=0;
    for(int i=1;i<=n;i++)if(!vis[i])trans(i,1);
    for(int i=q;i>=1;i--)
        if(op[i]==1)trans(x[i],0);
        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: 0ms
memory: 30576kb

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:

81
69
32
40
42
90
32
83
44
50
91
70
53
65
82
50
68
59
86
38
67
70
79
45
50
65
88
43
37
74
29
63
73
7
53
57
75
20
44
50
47
36
73
55
30
42
78
75
47
80
66
87
36
21
73
23
88
37
68
53
57
28
46
59
56
69
28
84
26
41
64
59
35
60
5
42
35
74
63
54
87
73
83
59
39
38
45
48
89
69
62
23
82
84
31
85
56
87
81
80
66...

result:

wrong answer 2476th lines differ - expected: '33', found: '30'

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 33ms
memory: 63296kb

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:

1394

result:

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

Subtask #3:

score: 0
Wrong Answer

Test #21:

score: 0
Wrong Answer
time: 131ms
memory: 41704kb

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:

1778
591
934
692
980
1908
704
1449
1616
466
1670
1478
1322
1341
1033
1661
770
1305
1878
1816
819
949
1685
1624
1718
1311
1445
1365
812
1397
1524
1501
969
164
1891
1847
1393
1415
625
1517
972
1268
1887
892
936
391
1508
901
1257
1279
1083
1291
1337
1894
386
1613
461
568
1698
1716
1686
1060
1544
473
15...

result:

wrong answer 1935th lines differ - expected: '1470', found: '1468'

Subtask #4:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 24ms
memory: 40168kb

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
679
486
652
481
540
430
356
588
407
521
570
547
403
316
279
617
128
431
492
453
578
427
637
430
569
233
98
439
675
619
641
549
567
299
625
227
365
338
433
306
547
286
628
581
574
627
655
451
663
140
273
665
607
302
323
674
193
612
557
523
517
677
544
570
355
542
390
196
260
430
296
6...

result:

wrong answer 5th lines differ - expected: '706', found: '679'

Subtask #5:

score: 0
Wrong Answer

Test #41:

score: 0
Wrong Answer
time: 111ms
memory: 87356kb

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
742
550
255
1297
781
1061
187
1324
262
448
426
1336
1246
1277
390
964
1243
1371
529
1150
545
1016
713
844
469
570
1323
426
995
1175
1339
1181
655
1291
538
906
572
415
1064
1276
1234
839
747
367
1135
621
363
1363
663
465
402
1146
1327
734
1093
527
1347
929
476
383
1365
344
1062
1363
452
...

result:

wrong answer 7th lines differ - expected: '1305', found: '1297'