Submission #331551

#TimeUsernameProblemLanguageResultExecution timeMemory
331551jovan_bSimple game (IZhO17_game)C++17
100 / 100
86 ms5416 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int MAX = 1000000; int h[MAX+5]; int bit[MAX+5]; void upd(int x, int val){ while(x <= MAX+1){ bit[x] += val; x += x & -x; } } int query(int x){ int res = 0; while(x){ res += bit[x]; x -= x & -x; } return res; } int main(){ ios_base::sync_with_stdio(false), cin.tie(0); cout.precision(10); cout << fixed; int n, m; cin >> n >> m; for(int i=1; i<=n; i++){ cin >> h[i]; } for(int i=2; i<=n; i++){ upd(min(h[i-1], h[i]), 1); upd(max(h[i-1], h[i])+1, -1); } while(m--){ int t; cin >> t; if(t == 1){ int i, y; cin >> i >> y; if(i > 1){ upd(min(h[i-1], h[i]), -1); upd(max(h[i-1], h[i])+1, 1); } if(i < n){ upd(min(h[i+1], h[i]), -1); upd(max(h[i+1], h[i])+1, 1); } h[i] = y; if(i > 1){ upd(min(h[i-1], h[i]), 1); upd(max(h[i-1], h[i])+1, -1); } if(i < n){ upd(min(h[i+1], h[i]), 1); upd(max(h[i+1], h[i])+1, -1); } } else{ int y; cin >> y; cout << query(y) << "\n"; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...