QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#648253 | #8354. T2 | zzzzzzy | 0 | 165ms | 50012kb | C++14 | 1.5kb | 2024-10-17 17:56:35 | 2024-10-17 17:56:35 |
Judging History
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'