Task: | Pizzeriat |
Sender: | ollpu |
Submission time: | 2018-01-14 19:28:03 +0200 |
Language: | C++ |
Status: | READY |
Result: | 100 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 11 |
#2 | ACCEPTED | 43 |
#3 | ACCEPTED | 46 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.04 s | 1 | details |
#2 | ACCEPTED | 0.05 s | 1 | details |
#3 | ACCEPTED | 0.04 s | 1 | details |
#4 | ACCEPTED | 0.11 s | 2 | details |
#5 | ACCEPTED | 0.10 s | 2 | details |
#6 | ACCEPTED | 0.11 s | 2 | details |
#7 | ACCEPTED | 0.12 s | 3 | details |
#8 | ACCEPTED | 0.10 s | 3 | details |
#9 | ACCEPTED | 0.14 s | 3 | details |
Code
#include <iostream> using namespace std; const int N = 1<<17; int spa[N<<1], spd[N<<1]; void set(int *sp, int i, int v) { i += N; sp[i] = v; while (i /= 2) { sp[i] = min(sp[i*2], sp[i*2+1]); } } int query(int *sp, int a, int b) { a += N; b += N; int r = 2e9; while (a <= b) { if (a&1) r = min(r, sp[a++]); if (~b&1) r = min(r, sp[b--]); a /= 2; b /= 2; } return r; } int main() { ios::sync_with_stdio(0); cin.tie(0); for (int i = 1; i < 2*N; ++i) spa[i] = 2e9, spd[i] = 2e9; int n, q; cin >> n >> q; for (int i = 0; i < n; ++i) { int v; cin >> v; spa[N+i] = v+i; spd[N+i] = v+(n-i-1); } for (int i = N-1; i; --i) { spa[i] = min(spa[i*2], spa[i*2+1]); spd[i] = min(spd[i*2], spd[i*2+1]); } for (int i = 0; i < q; ++i) { int t, k; cin >> t >> k; k--; if (t == 1) { int v; cin >> v; set(spa, k, v+k); set(spd, k, v+(n-k-1)); } else { int r; r = query(spd, 0, k)-(n-k-1); r = min(r, query(spa, k, n-1)-k); cout << r << '\n'; } } }
Test details
Test 1
Group: 1
Verdict: ACCEPTED
input |
---|
1000 1000 720 271 760 576 363 23 368 995... |
correct output |
---|
43 12 40 22 18 ... |
user output |
---|
43 12 40 22 18 ... |
Test 2
Group: 1
Verdict: ACCEPTED
input |
---|
1000 1000 720 18 984 261 344 257 686 441... |
correct output |
---|
10 20 27 37 73 ... |
user output |
---|
10 20 27 37 73 ... |
Test 3
Group: 1
Verdict: ACCEPTED
input |
---|
1000 1000 120 764 890 848 949 59 894 916... |
correct output |
---|
24 25 13 16 19 ... |
user output |
---|
24 25 13 16 19 ... |
Test 4
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 11763 43585 3126 3787 79765 64... |
correct output |
---|
284 143 346 203 157 ... |
user output |
---|
284 143 346 203 157 ... |
Test 5
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 76947 78386 71190 65478 90345 ... |
correct output |
---|
459 297 128 234 204 ... |
user output |
---|
459 297 128 234 204 ... |
Test 6
Group: 2
Verdict: ACCEPTED
input |
---|
100000 100000 39277 33504 98385 58115 28655 ... |
correct output |
---|
234 221 156 455 78 ... |
user output |
---|
234 221 156 455 78 ... |
Test 7
Group: 3
Verdict: ACCEPTED
input |
---|
100000 100000 46508 6952 22836 54480 91235 2... |
correct output |
---|
427 409 352 39 388 ... |
user output |
---|
427 409 352 39 388 ... |
Test 8
Group: 3
Verdict: ACCEPTED
input |
---|
100000 100000 15918 8771 36223 76330 39229 7... |
correct output |
---|
316 387 435 330 446 ... |
user output |
---|
316 387 435 330 446 ... |
Test 9
Group: 3
Verdict: ACCEPTED
input |
---|
100000 100000 87734 39225 78667 43704 17207 ... |
correct output |
---|
228 83 176 428 273 ... |
user output |
---|
228 83 176 428 273 ... |