Task: | Pizzeriat |
Sender: | Kuha |
Submission time: | 2018-01-14 19:36:10 +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.04 s | 1 | details |
#3 | ACCEPTED | 0.04 s | 1 | details |
#4 | ACCEPTED | 0.27 s | 2 | details |
#5 | ACCEPTED | 0.26 s | 2 | details |
#6 | ACCEPTED | 0.24 s | 2 | details |
#7 | ACCEPTED | 0.24 s | 3 | details |
#8 | ACCEPTED | 0.27 s | 3 | details |
#9 | ACCEPTED | 0.23 s | 3 | details |
Code
#include <bits/stdc++.h> #define N (1<<17) #define ll long long #define ld long double #define M 1000000007 #define INF 0x5ADFACE5 #define LINF 0x51DEEFFEC7C0DECALL #define pii pair<int, int> #define pll pair<long long, long long> #define F first #define S second using namespace std; int l[2 * N]; int r[2 * N]; int p[N]; int n, q; void setv(int k, int n) { l[k + N] = k - n; r[k + N] = k + n; k += N; for (k /= 2; k >= 1; k /= 2) { l[k] = max(l[2 * k], l[2 * k + 1]); r[k] = min(r[2 * k], r[2 * k + 1]); } } int lq (int i) { int a = 1 + N; int b = i + N; int ans = -INF; while (a <= b) { if (a & 1) ans = max(ans, l[a++]); if (~b & 1) ans = max(ans, l[b--]); a /= 2; b /= 2; } return ans; } int rq (int i) { int a = i + N; int b = n + N; int ans = INF; while (a <= b) { if (a & 1) ans = min(ans, r[a++]); if (~b & 1) ans = min(ans, r[b--]); a /= 2; b /= 2; } return ans; } int main () { cin>>n>>q; for (int i = 1; i <= n; i++) cin>>p[i]; for (int i = 1; i <= n; i++) { setv(i, p[i]); } while (q --> 0) { int t; cin>>t; if (t == 1) { int a, b; cin>>a>>b; setv(a, b); p[a] = b; } else { int i; cin>>i; int ans = min(p[i], min(i - lq(i - 1), rq(i + 1) - i)); cout<<ans<<endl; } } }
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 ... |