제출 #890626

#제출 시각아이디문제언어결과실행 시간메모리
890626aykhnSimple game (IZhO17_game)C++17
100 / 100
142 ms20048 KiB
#include <bits/stdc++.h> // author : aykhn using namespace std; typedef long long ll; #define pb push_back #define ins insert #define mpr make_pair #define all(v) v.begin(), v.end() #define bpc __builtin_popcountll #define pii pair<ll, ll> #define pll pair<ll, ll> #define fi first #define se second #define int ll #define infll 0x3F3F3F3F3F3F3F3F #define inf 0x3F3F3F3F const int MXN = 1e5 + 5; int n, m, sz = 1; int a[MXN], st[40*MXN]; void add(int l, int r, int x, int lx, int rx, int val) { if (l >= rx || r <= lx) return; if (l >= lx && r <= rx) { st[x] += val; return; } int mid = (l + r) >> 1; add(l, mid, 2*x + 1, lx, rx, val); add(mid, r, 2*x + 2, lx, rx, val); } int get(int l, int r, int x, int ind) { if (l + 1 == r) return st[x]; int mid = (l + r) >> 1; if (ind < mid) return st[x] + get(l, mid, 2*x + 1, ind); else return st[x] + get(mid, r, 2*x + 2, ind); } signed main() { ios_base::sync_with_stdio(0); cin.tie(nullptr); cin >> n >> m; while (sz < 10*MXN) sz <<= 1; for (int i = 1; i <= n; i++) cin >> a[i]; for (int i = 2; i <= n; i++) { int l = min(a[i - 1], a[i]); int r = max(a[i - 1], a[i]); if (l + 1 <= r - 1) add(0, sz, 0, l + 1, r, 1); } while (m--) { int t; cin >> t; if (t == 1) { int pos, val; cin >> pos >> val; if (pos > 1) { int l = min(a[pos - 1], a[pos]); int r = max(a[pos - 1], a[pos]); if (l + 1 <= r - 1) add(0, sz, 0, l + 1, r, -1); } if (pos < n) { int l = min(a[pos + 1], a[pos]); int r = max(a[pos + 1], a[pos]); if (l + 1 <= r - 1) add(0, sz, 0, l + 1, r, -1); } a[pos] = val; if (pos > 1) { int l = min(a[pos - 1], a[pos]); int r = max(a[pos - 1], a[pos]); if (l + 1 <= r - 1) add(0, sz, 0, l + 1, r, 1); } if (pos < n) { int l = min(a[pos + 1], a[pos]); int r = max(a[pos + 1], a[pos]); if (l + 1 <= r - 1) add(0, sz, 0, l + 1, r, 1); } } else { int h; cin >> h; cout << get(0, sz, 0, h) << '\n'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...