求助,只能过样例
查看原帖
求助,只能过样例
566549
thezmmm楼主2021/11/11 23:29
#include<stdio.h>
int a[500005] = {0};
int t[500005] = {0};
int n,m;
int lowbit(int x){
    return x&(-x);
}
void add(int x,int k){
    for(;x<=n;x+=lowbit(x)) t[x]+=k;
    return;
}

int ask(int i){
    int ans;
    for(;i;i-=lowbit(i)) ans+=t[i];
    return ans;
}

int main(){
    scanf("%d %d",&n,&m);
    for(int i = 1;i <= n;i++){
        scanf("%d",&a[i]);
         add(i,a[i] - a[i-1]);
    }
    while(m--){
        int c;
        scanf("%d",&c);
        if(c == 1){
            int x,y,k;
            scanf("%d %d %d",&x,&y,&k);
            add(x,k);
            add(y+1,-k);
        }
        else if(c == 2){
            int x;
            scanf("%d",&x);
            printf("%d\n",ask(x));
        }
    }
    return 0;
}
2021/11/11 23:29
加载中...