Submission #333893

#TimeUsernameProblemLanguageResultExecution timeMemory
333893juggernautSimple game (IZhO17_game)C++14
100 / 100
424 ms19564 KiB
#include<bits/stdc++.h>
using namespace std;
const int mx=1e6;
int n,q,h[100005],tree[mx<<2],flag[mx<<2];
void push(int v,int l,int r){
    if(l!=r){
        flag[v<<1]+=flag[v];
        flag[v<<1|1]+=flag[v];
    }
    tree[v]+=flag[v]*(r-l+1);
    flag[v]=0;
}
void update(int v,int l,int r,int ql,int qr,int val){
    if(qr<l||r<ql)return;
    if(ql<=l&&r<=qr){
        flag[v]+=val;
        return;
    }
    push(v,l,r);
    int mid=(l+r)>>1;
    update(v<<1,l,mid,ql,qr,val);
    update(v<<1|1,mid+1,r,ql,qr,val);
    tree[v]=tree[v<<1]+tree[v<<1|1];
}
int get(int v,int l,int r,int pos){
    if(pos<l||pos>r)return 0;
    push(v,l,r);
    if(l==r)return tree[v];
    int mid=(l+r)>>1;
    return get(v<<1,l,mid,pos)+get(v<<1|1,mid+1,r,pos);
}
void upd(int l,int r,int val){
    if(l>r)swap(l,r);
    update(1,1,mx,l,r,val);
}
int main(){
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)scanf("%d",&h[i]);
    for(int i=2;i<=n;i++)upd(h[i-1],h[i],1);
    while(q--){
        int type;
        scanf("%d",&type);
        if(type&1){
            int pos,val;
            scanf("%d%d",&pos,&val);
            if(pos>1)upd(h[pos],h[pos-1],-1);
            if(pos<n)upd(h[pos],h[pos+1],-1);
            h[pos]=val;
            if(pos>1)upd(h[pos],h[pos-1],1);
            if(pos<n)upd(h[pos],h[pos+1],1);
        }else{
            int x;
            scanf("%d",&x);
            printf("%d\n",get(1,1,mx,x));
        }
    }
}

Compilation message (stderr)

game.cpp: In function 'int main()':
game.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   37 |     scanf("%d%d",&n,&q);
      |     ~~~~~^~~~~~~~~~~~~~
game.cpp:38:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   38 |     for(int i=1;i<=n;i++)scanf("%d",&h[i]);
      |                          ~~~~~^~~~~~~~~~~~
game.cpp:42:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   42 |         scanf("%d",&type);
      |         ~~~~~^~~~~~~~~~~~
game.cpp:45:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   45 |             scanf("%d%d",&pos,&val);
      |             ~~~~~^~~~~~~~~~~~~~~~~~
game.cpp:53:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   53 |             scanf("%d",&x);
      |             ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...