Submission #1169341

#TimeUsernameProblemLanguageResultExecution timeMemory
1169341mnbvcxz123Simple game (IZhO17_game)C++20
0 / 100
1095 ms4168 KiB
#include<bits/stdc++.h> using namespace std; using ll=long long; struct Fen{ int n; vector<int>tree; void init(int N){ n=N; tree.resize(n+5); } void update(int p, int x){ for(;p<=n;p+=p&-p)tree[p]+=x; } int query(int i){ int ret=0; for(;i;i-=i&-i)ret+=tree[i]; return ret; } }; int n,q; int a[100005]; Fen fen; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin>>n>>q; fen.init(1e6); for(int i=1;i<=n;++i){ cin>>a[i]; if(i>1){ int left=min(a[i],a[i-1]); int right=max(a[i],a[i-1]); fen.update(left,1); fen.update(right,-1); } } while(q--){ int c; cin>>c; if(c==1){ int i,x; cin>>i>>x; if(i>1){ int left=min(a[i],a[i-1]); int right=max(a[i],a[i-1]); fen.update(left,-1); fen.update(right,1); } if(i+1<=n){ ++i; int left=min(a[i],a[i+1]); int right=max(a[i],a[i+1]); fen.update(left,-1); fen.update(right,1); --i; } a[i]=x; if(i>1){ int left=min(a[i],a[i-1]); int right=max(a[i],a[i-1]); fen.update(left,1); fen.update(right,-1); } if(i+1<=n){ ++i; int left=min(a[i],a[i-1]); int right=max(a[i],a[i-1]); fen.update(left,1); fen.update(right,-1); --i; } }else{ int x; cin>>x; cout<<fen.query(x)<<'\n'; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...