Submission #570716

#TimeUsernameProblemLanguageResultExecution timeMemory
570716saarang123Simple game (IZhO17_game)C++17
100 / 100
71 ms6844 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MXN = 100 * 1000 + 3; const int MXM = 1000 * 1000 + 3; int bit[MXM], a[MXN], n, q; void upd(int x, int v = 1) { for(; x < MXM; x += (x & -x)) bit[x] += v; } void upd(int l, int r, int v) { upd(l, v); upd(r + 1, -v); } int qry(int x) { int res = 0; for(; x > 0; x -= (x & -x)) res += bit[x]; return res; } signed main() { std::ios::sync_with_stdio(0); std::cin.tie(0); cin >> n >> q; for(int i = 1; i <= n; i++) { cin >> a[i]; if(i > 1) { int x = min(a[i - 1], a[i]); int y = max(a[i - 1], a[i]); upd(x, y, 1); } } while(q--) { int tp; cin >> tp; if(tp == 1) { int i, val; cin >> i >> val; if(i > 1) { int x = min(a[i - 1], a[i]); int y = max(a[i - 1], a[i]); upd(x, y, -1); } if(i < n) { int x = min(a[i + 1], a[i]); int y = max(a[i + 1], a[i]); upd(x, y, -1); } a[i] = val; if(i > 1) { int x = min(a[i - 1], a[i]); int y = max(a[i - 1], a[i]); upd(x, y, 1); } if(i < n) { int x = min(a[i + 1], a[i]); int y = max(a[i + 1], a[i]); upd(x, y, 1); } } else { int h; cin >> h; cout << qry(h) << '\n'; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...