Submission #341382

#TimeUsernameProblemLanguageResultExecution timeMemory
341382nandonathanielSimple game (IZhO17_game)C++14
100 / 100
360 ms10860 KiB
#include<bits/stdc++.h> using namespace std; const int MAXN=100005,MAXV=1000005; int bit[2][MAXV],a[MAXN]; void update(int now,int val,int id){ for(int i=now;i<MAXV;i+=(i&(-i)))bit[id][i]+=val; } int query(int now,int id){ int ret=0; for(int i=now;i>0;i-=(i&(-i)))ret+=bit[id][i]; return ret; } int main(){ // ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n,q,op,x,y; cin >> n >> q; for(int i=1;i<=n;i++){ cin >> a[i]; } if(n<=2){ while(q--){ cin >> op >> x; if(op==1){ cin >> y; a[x]=y; } else{ if(n==1)cout << 0 << '\n'; else{ if((a[1]>=x && a[2]<=x) || (a[2]>=x && a[1]<=x))cout << 1 << '\n'; else cout << 0 << '\n'; } } } return 0; } for(int i=1;i<n;i++){ int j=i+1; update(min(a[i],a[j]),1,0); update(max(a[i],a[j]),1,1); } while(q--){ cin >> op >> x; if(op==1){ cin >> y; int j=x-1,k=x+1; bool skipj=false,skipk=false; if(j==0)skipj=true; if(k==n+1)skipk=true; if(!skipj){ update(min(a[x],a[j]),-1,0); update(max(a[x],a[j]),-1,1); } if(!skipk){ update(min(a[x],a[k]),-1,0); update(max(a[x],a[k]),-1,1); } a[x]=y; if(!skipj){ update(min(a[x],a[j]),1,0); update(max(a[x],a[j]),1,1); } if(!skipk){ update(min(a[x],a[k]),1,0); update(max(a[x],a[k]),1,1); } } else{ int ans=n-1; ans-=query(x-1,1); // cout << "werner " << ans << '\n'; ans-=(query(MAXV-1,0)-query(x,0)); cout << ans << '\n'; } // cout << "min" << endl; // for(int i=1;i<=5;i++){ // cout << query(i,0)-query(i-1,0) << " "; // } // cout << endl; // cout << "max" << endl; // for(int i=1;i<=5;i++){ // cout << query(i,1)-query(i-1,1) << " "; // } // cout << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...