Submission #505684

#TimeUsernameProblemLanguageResultExecution timeMemory
505684pragmatistSimple game (IZhO17_game)C++17
100 / 100
199 ms19468 KiB
#include <bits/stdc++.h> #define pb push_back #define sz(v) (int)v.size() #define all(v) v.begin(),v.end() #define rall(v) v.rbegin(),v.rend() #define x first #define y second #define int long long #define nl "\n" using namespace std; typedef long long ll; typedef pair<long long, long long> pll; typedef pair <ll, ll> pii; const int N = (int)1e6 + 7; const int M = (int)5e6 + 7; const ll MOD = (ll)1e9 + 7; const int inf = (int)1e9 + 7; const ll INF = (ll)3e18 + 7; pii dir[] = {{-1, -1}, {1, 1}, {-1, 1}, {1, -1}}; int n, q, y[N], t[4*N]; void upd(int v, int tl, int tr, int l, int r, int val) { if(tl >= l && tr <= r) { t[v] += val; return; } if(tl > r || l > tr) return; int mid = (tl + tr) >> 1; upd(v * 2, tl, mid, l, r, val); upd(v * 2 + 1, mid + 1, tr, l, r, val); } int get(int v, int tl, int tr, int id, int res) { res += t[v]; if(tl == tr) return res; int mid = (tl + tr) >> 1; if(id <= mid) return get(v * 2, tl, mid, id, res); else return get(v * 2 + 1, mid + 1, tr, id, res); } void solve() { cin >> n >> q; for(int i = 1; i <= n; ++i) { cin >> y[i]; } for(int i = 1; i < n; ++i) { int l = min(y[i], y[i + 1]), r = max(y[i], y[i + 1]); upd(1, 1, 1e6, l, r, 1); } while(q--) { char tp; cin >> tp; int i, d; if(tp == '1') { cin >> i >> d; if(i < n) { int l = min(y[i], y[i + 1]), r = max(y[i], y[i + 1]); upd(1, 1, 1e6, l, r, -1); } if(i > 1) { int l = min(y[i], y[i - 1]), r = max(y[i], y[i - 1]); upd(1, 1, 1e6, l, r, -1); } y[i] = d; if(i < n) { int l = min(y[i], y[i + 1]), r = max(y[i], y[i + 1]); upd(1, 1, 1e6, l, r, 1); } if(i > 1) { int l = min(y[i], y[i - 1]), r = max(y[i], y[i - 1]); upd(1, 1, 1e6, l, r, 1); } } else { cin >> d; cout << get(1, 1, 1e6, d, 0) << nl; } } } signed main() { ios_base::sync_with_stdio(NULL); cin.tie(0); cout.tie(0); int test = 1; //cin >> test; for(int i = 1; i <= test; ++i) { //cout << "Case " << i << ": "; solve(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...