QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#225334 | #6400. Game: Celeste | YouKn0wWho | RE | 510ms | 360360kb | C++23 | 3.2kb | 2023-10-24 15:10:26 | 2023-10-24 15:10:26 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N = 1e6 + 9, P = 1e6 + 3, mod = 1e9 + 9;
struct PST {
#define lc t[cur].l
#define rc t[cur].r
struct node {
int l = 0, r = 0, val = 0, cnt = 0;
} t[22 * N];
int T = 0;
int build(int b, int e) {
int cur = ++T;
t[cur].l = t[cur].r = t[cur].val = t[cur].cnt = 0;
if(b == e) return cur;
int mid = b + e >> 1;
lc = build(b, mid);
rc = build(mid + 1, e);
t[cur].val = (t[lc].val + t[rc].val) % mod;
t[cur].cnt = t[lc].cnt + t[rc].cnt;
return cur;
}
int upd(int pre, int b, int e, int i, int v) {
int cur = ++T;
t[cur] = t[pre];
if(b == e) {
(t[cur].val += v) %= mod;
t[cur].cnt += 1;
return cur;
}
int mid = b + e >> 1;
if(i <= mid) {
rc = t[pre].r;
lc = upd(t[pre].l, b, mid, i, v);
} else {
lc = t[pre].l;
rc = upd(t[pre].r, mid + 1, e, i, v);
}
t[cur].val = (t[lc].val + t[rc].val) % mod;
t[cur].cnt = t[lc].cnt + t[rc].cnt;
return cur;
}
bool query(int pre, int cur, int b, int e) {
if(b == e) return t[pre].cnt < t[cur].cnt;
int mid = b + e >> 1;
if(t[rc].val == t[t[pre].r].val) return query(t[pre].l, lc, b, mid);
return query(t[pre].r, rc, mid + 1, e);
}
vector<int> v;
void gen_values(int cur, int b, int e) {
if (b == e) {
while (t[cur].cnt) {
v.push_back(b);
t[cur].cnt--;
}
return;
}
int mid = (b + e) >> 1;
gen_values(rc, mid + 1, e);
gen_values(lc, b, mid);
}
} t;
int n;
int dp[N]; // stores the root of the sequence in segment tree
bool cmp(int i, int j) {
return t.query(dp[i], dp[j], 1, n);
}
int a[N], x[N], pw[N];
bool can[N];
int32_t main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
pw[0] = 1;
for (int i = 1; i < N; i++) {
pw[i] = 1LL * pw[i - 1] * P % mod;
}
int tc; cin >> tc;
while (tc--) {
int l, r; cin >> n >> l >> r;
for (int i = 1; i <= n; i++) {
cin >> x[i];
}
for (int i = 1; i <= n; i++) {
cin >> a[i];
can[i] = true;
}
deque<int> dq;
t.T = 0;
dp[1] = t.build(1, n);
dp[1] = t.upd(dp[1], 1, n, a[1], pw[a[1]]);
auto add = [&](int i) {
if (!can[i]) return;
while (!dq.empty() and cmp(dq.back(), i)) {
dq.pop_back();
}
dq.push_back(i);
};
auto rem = [&](int i) {
while (!dq.empty() and dq.front() <= i) {
dq.pop_front();
}
};
auto get = [&]() {
if (dq.empty()) return -1;
return dq.front();
};
int lid = 1, rid = 0;
for (int i = 2; i <= n; i++) {
while (rid + 1 < i and x[rid + 1] <= x[i] - l) {
add(++rid);
}
while (lid < i and x[lid] < x[i] - r) {
rem(lid++);
}
int mx = get();
if (mx != -1) {
dp[i] = t.upd(dp[mx], 1, n, a[i], pw[a[i]]);
}
else {
can[i] = false;
}
}
if (!can[n]) {
cout << -1 << '\n';
}
else {
t.v.clear();
t.gen_values(dp[n], 1, n);
cout << t.v.size() << '\n';
for (auto x: t.v) {
cout << x << ' ';
}
cout << '\n';
}
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 3ms
memory: 351700kb
input:
2 5 2 3 1 2 3 4 5 5 2 3 1 4 3 1 2 1 4 7 3 3 3
output:
3 5 4 3 -1
result:
ok 3 lines
Test #2:
score: 0
Accepted
time: 163ms
memory: 352684kb
input:
10000 57 8 11 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 11 16 7 7 10 13 9 14 10 1 12 4 8 13 3 20 16 7 16 19 20 8 19 7 16 6 17 13 7 19 17 11 12 17 6 3 7 8 14 2 4 15 5 18 16 7 20 9 1...
output:
7 20 20 19 14 12 11 3 -1 6 6 5 3 2 1 1 -1 185 20 20 20 20 20 20 20 20 19 19 19 19 19 19 19 19 19 19 19 19 18 18 18 18 18 17 17 17 17 17 17 17 17 16 16 16 16 16 16 16 16 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 15 14 14 14 14 14 14 14 13 13 13 13 13 13 13 13 13 12 12 12 12 12 12 12 ...
result:
ok 16378 lines
Test #3:
score: 0
Accepted
time: 146ms
memory: 352944kb
input:
10000 86 230405 991217 3291 11742 17120 30018 47955 52215 96227 98031 100118 106944 117304 121905 124796 135037 164100 164654 169459 177527 206513 212554 228740 229590 261521 295062 300116 312030 326533 329513 349983 353580 355242 356731 363347 368753 389545 396163 399755 409927 426532 427781 441386...
output:
4 20 19 2 1 4 19 12 6 3 -1 -1 24 20 19 18 18 18 18 18 18 18 18 16 16 16 16 15 15 13 12 11 9 5 4 2 2 -1 2 4 3 3 6 4 2 4 13 12 5 5 3 20 17 5 3 20 8 3 -1 -1 1 1 -1 5 20 20 19 15 14 2 13 12 -1 -1 4 20 20 8 5 -1 -1 -1 6 20 16 16 16 13 9 -1 -1 -1 3 19 17 11 3 19 15 9 -1 -1 -1 -1 -1 -1 2 7 3...
result:
ok 14975 lines
Test #4:
score: 0
Accepted
time: 158ms
memory: 351636kb
input:
10000 101 17 17 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98...
output:
-1 15 10 10 10 10 10 10 9 9 9 9 7 7 6 6 3 -1 44 10 10 10 10 10 10 10 10 10 10 10 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 8 8 8 8 7 6 6 6 6 6 6 6 5 4 3 3 3 3 11 10 10 10 10 10 9 8 7 6 6 2 6 10 10 10 10 8 3 18 10 10 10 10 10 10 8 8 8 8 7 7 7 6 5 3 2 2 -1 -1 1 1 -1 -1 -1 20 10 10 10 10 10 10 10 10 10 9 8 8...
result:
ok 16344 lines
Test #5:
score: 0
Accepted
time: 138ms
memory: 351488kb
input:
10000 18 16 16 1 2 3 4 5 6 7 8 10 11 12 13 14 16 17 18 19 20 2 2 2 1 2 1 1 2 2 2 2 1 2 2 1 2 1 1 403 3 7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 ...
output:
-1 126 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 10 2 2 2 2 2 2 1 1 1...
result:
ok 16420 lines
Test #6:
score: 0
Accepted
time: 151ms
memory: 353232kb
input:
10000 251 1 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 9...
output:
251 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 16925 lines
Test #7:
score: 0
Accepted
time: 251ms
memory: 352844kb
input:
100 23882 222 481 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 ...
output:
102 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19...
result:
ok 167 lines
Test #8:
score: 0
Accepted
time: 164ms
memory: 353300kb
input:
100 3789 29850 70419 774 1032 1649 1723 2194 3021 3114 3308 3344 3360 3688 3781 3967 4245 4878 4966 5099 5597 5617 5638 5645 5784 5871 6136 6158 6358 6483 6600 6766 6775 6800 6895 7119 7439 7485 7696 7734 8432 8493 8581 8627 9203 9576 9885 10062 10290 10454 10466 10537 10717 10861 11048 11484 11497 ...
output:
30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 19 18 3 -1 -1 -1 4 20 20 18 10 -1 6 20 20 20 20 15 9 -1 -1 5 20 20 20 18 4 4 20 20 13 7 -1 4 20 20 19 18 -1 -1 -1 -1 2 16 8 -1 3 20 20 6 8 20 20 20 20 20 20 15 12 -1 -1 -1 17 20 20 20 20 20 20 20 20 20 20 20...
result:
ok 139 lines
Test #9:
score: 0
Accepted
time: 216ms
memory: 352212kb
input:
100 181 1947 1967 17 23 47 53 55 68 84 92 110 147 153 164 191 198 207 209 215 221 255 269 275 302 305 322 324 363 370 373 385 405 407 429 451 458 466 472 478 500 508 544 557 561 564 565 569 587 600 610 617 630 645 659 665 670 674 715 726 744 747 764 769 770 774 782 786 787 794 795 824 852 860 873 87...
output:
-1 -1 -1 12 10 10 10 10 10 10 10 10 10 10 9 4 12 10 10 10 10 10 10 10 10 10 10 5 5 13 10 10 10 10 10 10 10 10 10 10 10 5 4 -1 22 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 5 2 215 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 ...
result:
ok 166 lines
Test #10:
score: 0
Accepted
time: 226ms
memory: 352524kb
input:
100 5589 851 904 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9...
output:
-1 267 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3...
result:
ok 184 lines
Test #11:
score: 0
Accepted
time: 127ms
memory: 353480kb
input:
100 6944 1905 1926 2 3 4 6 7 8 9 10 11 13 15 16 17 18 20 22 23 24 25 29 31 32 33 34 35 39 40 42 43 44 45 46 47 49 51 54 55 57 58 60 61 62 63 64 67 68 69 71 72 74 75 76 78 79 80 81 82 83 84 85 86 90 91 92 94 95 96 98 100 104 105 106 107 108 109 111 112 117 118 119 120 123 125 126 127 128 131 133 134 ...
output:
-1 -1 296 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 118 lines
Test #12:
score: 0
Accepted
time: 307ms
memory: 354184kb
input:
10 93999 762 838 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9...
output:
124 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 1 1 2332 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...
result:
ok 20 lines
Test #13:
score: 0
Accepted
time: 228ms
memory: 358792kb
input:
10 10628 1687 1731 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97...
output:
-1 -1 76 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 -1 -1 219 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...
result:
ok 13 lines
Test #14:
score: 0
Accepted
time: 133ms
memory: 356944kb
input:
3 187063 95635158 95636093 11 507 618 934 1132 2191 3177 3365 3571 3605 4833 4988 5100 6157 6542 7005 7008 7258 7353 7366 7507 9327 10129 10131 10240 11168 11397 12964 13519 14429 14748 15782 16126 16244 16491 17464 17693 18411 19312 19807 19967 20183 21049 21170 21526 21813 22278 22946 23297 23600 ...
output:
-1 -1 -1
result:
ok 3 lines
Test #15:
score: 0
Accepted
time: 210ms
memory: 357960kb
input:
3 109970 343649 521308 4 6 25 27 32 45 53 56 76 81 100 111 115 133 143 145 163 169 173 174 194 199 243 261 299 300 303 311 332 335 341 357 367 368 374 387 392 412 415 422 435 437 442 443 444 454 458 462 466 478 482 486 490 497 499 505 512 521 528 544 549 558 560 574 587 597 620 622 625 643 651 652 6...
output:
3 2 2 1 -1 8 2 2 2 2 2 2 1 1
result:
ok 5 lines
Test #16:
score: 0
Accepted
time: 270ms
memory: 359952kb
input:
3 541782 286 289 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 9...
output:
1895 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1...
result:
ok 5 lines
Test #17:
score: 0
Accepted
time: 510ms
memory: 358940kb
input:
2 590573 45 48 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 ...
output:
12722 100000 100000 100000 100000 100000 100000 100000 99999 99999 99999 99999 99999 99999 99998 99998 99998 99998 99998 99998 99998 99998 99998 99998 99998 99998 99998 99998 99997 99997 99997 99997 99997 99996 99996 99996 99995 99995 99994 99994 99994 99994 99994 99994 99994 99993 99993 99993 99993...
result:
ok 4 lines
Test #18:
score: 0
Accepted
time: 392ms
memory: 360360kb
input:
2 658290 51 71 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 ...
output:
11109 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 100 10...
result:
ok 4 lines
Test #19:
score: -100
Runtime Error
input:
1 1000000 324190 960223 187 199 240 453 559 628 670 753 755 1329 1330 1681 1904 2042 2061 2169 2183 2233 2258 2535 2555 2711 2718 2819 2951 3211 3294 3309 3342 3456 3485 3491 3782 3834 3854 3968 4205 4236 4312 4314 4340 4371 4596 4603 4734 4792 5133 5249 5273 5469 5895 5915 5977 6006 6029 6062 6089 ...