제출 #171547

#제출 시각아이디문제언어결과실행 시간메모리
171547juggernautSimple game (IZhO17_game)C++14
100 / 100
489 ms19448 KiB
//Just try and the idea will come!
#include<bits/stdc++.h>
using namespace std;
const int h=1000000;
int n,m,tree[h*4],mx,a[100001],i,flag[h*4],type,x,y;
void push(int v,int l,int r){
    if(l!=r){
        flag[(v<<1)]+=flag[v];
        flag[(v<<1)+1]+=flag[v];
    }
    tree[v]+=(r-l+1)*flag[v];
    flag[v]=0;
}
void update(int v,int l,int r,int ql,int qr,int val){
    push(v,l,r);
    if(r<ql||qr<l)return;
    if(ql<=l&&r<=qr){
        flag[v]+=val;
        push(v,l,r);
        return;
    }
    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 ql,int qr){
    push(v,l,r);
    if(ql<=l&&r<=qr)return tree[v];
    if(r<ql||qr<l)return 0;
    int mid=(l+r)>>1;
    return get((v<<1),l,mid,ql,qr)+get((v<<1)+1,mid+1,r,ql,qr);
}
void update(int a,int b,int val){
    if(a>b)swap(a,b);
    update(1,1,h,a,b,val);
}
main(){
    scanf("%d%d",&n,&m);
    scanf("%d",&a[1]);
    for(i=2;i<=n;i++)scanf("%d",&a[i]),update(a[i-1],a[i],1);
    while(m--){
        scanf("%d",&type);
        if(type&1){
            scanf("%d%d",&x,&y);
            if(x>1)update(a[x-1],a[x],-1);
            if(x<n)update(a[x],a[x+1],-1);
            a[x]=y;
            if(x>1)update(a[x-1],a[x],1);
            if(x<n)update(a[x],a[x+1],1);
        }else{
            scanf("%d",&x);
            printf("%d\n",get(1,1,h,x,x));
        }
    }
}

컴파일 시 표준 에러 (stderr) 메시지

game.cpp:38:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main(){
      ^
game.cpp: In function 'int main()':
game.cpp:39:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d%d",&n,&m);
     ~~~~~^~~~~~~~~~~~~~
game.cpp:40:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&a[1]);
     ~~~~~^~~~~~~~~~~~
game.cpp:41:39: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     for(i=2;i<=n;i++)scanf("%d",&a[i]),update(a[i-1],a[i],1);
                      ~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
game.cpp:43:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&type);
         ~~~~~^~~~~~~~~~~~
game.cpp:45:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d%d",&x,&y);
             ~~~~~^~~~~~~~~~~~~~
game.cpp:52:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
             scanf("%d",&x);
             ~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...