Submission #88646

#TimeUsernameProblemLanguageResultExecution timeMemory
88646Bodo171Simple game (IZhO17_game)C++14
100 / 100
218 ms22684 KiB
#include <iostream> #include <fstream> using namespace std; const int lim=1000*1000; const int nmax=lim+5; int aib[nmax],a[nmax]; int n,m,i,j,poz,val,x,tip,vv; inline int lbit(int x) { return (((x^(x-1))&x)); } void update(int poz,int val) { for(int idx=poz;idx<=lim;idx+=lbit(idx)) aib[idx]+=val; } int compute(int poz) { int ret=0; for(int idx=poz;idx>0;idx-=lbit(idx)) ret+=aib[idx]; return ret; } void add(int l,int r,int val) { if(l>r) swap(l,r); update(l,val); update(r+1,-val); } int main() { //freopen("data.in","r",stdin); ios_base::sync_with_stdio(false); cin>>n>>m; for(i=1;i<=n;i++) cin>>a[i]; for(i=1;i<n;i++) add(a[i],a[i+1],1); for(i=1;i<=m;i++) { cin>>tip; if(tip==1) { cin>>poz>>val; for(vv=-1;vv<=1;vv+=2) { if(poz>1) add(a[poz-1],a[poz],vv); if(poz<n) add(a[poz+1],a[poz],vv); a[poz]=val; } } else { cin>>val; cout<<compute(val)<<'\n'; } } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...