Submission #36253

#TimeUsernameProblemLanguageResultExecution timeMemory
36253touristk2000Simple game (IZhO17_game)C++14
22 / 100
233 ms6788 KiB
#include <bits/stdc++.h> using namespace std; const int maxn = 1111111; int n,m; int a[111111]; int t[maxn]; int sum(int r){ int res = 0; for (; r >= 0; r = (r & (r+1)) - 1) res += t[r]; return res; } void inc(int i, int delta){ for(; i < maxn; i = (i | (i+1))) t[i] += delta; } int main(){ //freopen("game.in","r",stdin); //freopen("game.out","w",stdout); cin >> n >> m; for(int i = 1; i <= n; i ++){ cin >> a[i]; if(i > 1){ inc(min(a[i - 1],a[i]), 1); inc(max(a[i - 1],a[i]), -1); } } for(int i = 0; i < m; i ++){ int t,p; cin >> t >> p; if(t == 1){ int v; cin >> v; if(p > 1){ inc(min(a[p - 1], a[p]), -1); inc(max(a[p - 1], a[p]), 1); inc(min(a[p - 1], v), 1); inc(max(a[p - 1], v), -1); } if(p < n){ inc(min(a[p + 1], a[p]), -1); inc(max(a[p + 1], a[p]), 1); inc(min(a[p + 1], v), 1); inc(max(a[p + 1], v), -1); } a[p] = v; } else{ cout << sum(p) << endl; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...