QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#647058#8354. T2songziyan0 100ms86576kbC++141.2kb2024-10-17 11:22:412024-10-17 11:22:42

Judging History

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

  • [2024-10-17 11:22:42]
  • 评测
  • 测评结果:0
  • 用时:100ms
  • 内存:86576kb
  • [2024-10-17 11:22:41]
  • 提交

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],f[N],g[N],p[N],v[N],t[N],vis[N],ans[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--)g[j]=min(g[j],g[j-v[i]]+t[i]);}
signed main(){
    n=read();q=read();K=read();B=sqrt(q*K/(n+K));B=max(B,1ll);
    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(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: 0ms
memory: 30484kb

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
35
44
46
95
35
87
47
54
96
74
57
70
86
54
72
63
91
42
71
74
84
49
54
69
92
47
40
79
32
67
77
7
57
61
79
21
47
54
50
39
78
59
33
46
82
79
51
84
70
91
39
23
78
25
92
41
72
57
61
29
50
63
60
73
30
89
28
45
68
63
38
65
6
46
38
79
67
58
91
77
88
63
43
41
49
52
94
73
66
25
86
88
34
89
61
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: 39ms
memory: 65340kb

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: 100ms
memory: 57540kb

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:

1706
591
934
692
980
1724
704
1449
1599
466
1640
1478
1322
1341
1033
1635
770
1305
1714
1714
819
949
1649
1607
1674
1311
1444
1365
812
1397
1522
1500
969
164
1708
1708
1393
1415
625
1514
972
1268
1704
892
936
391
1507
901
1257
1279
1083
1291
1337
1704
386
1596
461
568
1657
1666
1647
1060
1538
473
15...

result:

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

Subtask #4:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 11ms
memory: 39620kb

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
571
486
571
481
540
430
356
571
407
521
570
547
403
316
279
571
128
431
492
453
571
427
571
430
569
233
98
439
571
571
571
549
567
299
571
227
365
338
433
306
547
286
571
571
571
571
571
451
571
140
273
571
571
302
323
571
193
571
557
523
517
571
544
570
355
542
390
196
260
430
296
5...

result:

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

Subtask #5:

score: 0
Wrong Answer

Test #41:

score: 0
Wrong Answer
time: 100ms
memory: 86576kb

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
1262
781
1061
187
1262
262
448
426
1262
1246
1262
390
964
1243
1262
529
1150
545
1016
713
844
469
570
1262
426
995
1175
1262
1181
655
1262
538
906
572
415
1064
1262
1234
839
747
367
1135
621
363
1262
663
465
402
1146
1262
734
1093
527
1262
929
476
383
1262
344
1062
1262
452
...

result:

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