QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#648253#8354. T2zzzzzzy0 165ms50012kbC++141.5kb2024-10-17 17:56:352024-10-17 17:56:35

Judging History

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

  • [2024-10-17 17:56:35]
  • 评测
  • 测评结果:0
  • 用时:165ms
  • 内存:50012kb
  • [2024-10-17 17:56:35]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2000005, B = 80, b = 6000, INF = 0x3f3f3f3f;
int n, m, k, x[N], v[N], f[N], g[N], op[N], q[N], cnt[N], ans[N];
bool is[N];
inline int max(int x, int y) {
  return x > y ? x : y;
}
inline int min(int x, int y) {
  return x < y ? x : y;
}
void add(int p) {
  if (x[p] <= B)
    for (int i = k; i >= x[p] * v[p]; i--)
      f[i] = max(f[i - x[p] * v[p]] + v[p], f[i]);
  else
    for (int i = k / x[p]; i >= v[p]; i--)
      g[i] = min(g[i - v[p]] + x[p] * v[p], g[i]);
}
signed main() {
cin.tie(nullptr)->sync_with_stdio(false);

  cin >> n >> m >> k;
  for (int i = 1; i <= n; i++) {
    cin >> x[i] >> v[i];
  }
  for (int i = 1; i <= k / B; i++) {
    g[i] = INF;
  }
  for (int i = 1; i <= m; i++) {
    cin >> op[i] >> q[i];
    if (op[i] == 1) {
      is[q[i]] = 1;
    }
  }
  for (int i = 1; i <= n; i++)
    if (!is[i] && x[i] > b) {
      if (cnt[v[i]] * v[i] >= k / b) {
        is[i] = 1;
      } else {
        cnt[v[i]]++;
      }
    }
  for (int i = 1; i <= n; i++) {
    if (!is[i]) {
      add(i);
    }
  }
  for (int i = m; i; i--) {
    if (op[i] == 1) {
      add(q[i]);
    } else {
      for (int j = k / B; ~j; j--) {
        if (g[j] <= q[i]) {
          ans[i] = max(j + f[q[i] - g[j]], ans[i]);
        }
      }
    }
  }
  for (int i = 1; i <= m; 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: 16268kb

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 2047th lines differ - expected: '51', found: '50'

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 156ms
memory: 49920kb

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:

1448

result:

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

Subtask #3:

score: 0
Wrong Answer

Test #21:

score: 0
Wrong Answer
time: 107ms
memory: 28344kb

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:

1711
591
934
692
980
1731
704
1449
1601
466
1642
1478
1322
1341
1033
1636
770
1305
1721
1715
819
949
1652
1607
1676
1311
1445
1365
812
1397
1523
1500
969
164
1715
1715
1393
1415
625
1515
972
1268
1711
892
936
391
1507
901
1257
1279
1083
1291
1337
1711
386
1596
461
568
1658
1671
1648
1060
1540
473
15...

result:

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

Subtask #4:

score: 0
Wrong Answer

Test #31:

score: 0
Wrong Answer
time: 31ms
memory: 20916kb

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

result:

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

Subtask #5:

score: 0
Wrong Answer

Test #41:

score: 0
Wrong Answer
time: 165ms
memory: 50012kb

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

result:

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