蒟蒻求助
查看原帖
蒟蒻求助
307940
aaaaaaaawsl楼主2021/7/11 00:36

代码

#include<cstdio>
#include<iostream>
using namespace std;
long long c[500001];
int n,m,v,x,k,h,gjr;
int lowbit(int n){
	return n&(-n);
}
long long pa(int u){
	long long ans=0;
	for(int i=u;i;i-=lowbit(i))
		ans+=c[i];
	return ans;
}
void add(int a,int h){
	for(int i=a;i<=n;i+=lowbit(i))
		c[i]+=h;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		int x;
		scanf("%d",&x);
		add(i,x-gjr);
        gjr=x;
	}
	for(int i=1;i<=m;i++){
		scanf("%d%d",&v,&x);
		if(v==1){
			scanf("%d%d",&k,&h);
			add(x,h);
			add(k+1,-h);
		}
		if(v==2)
			printf("%lld\n",pa(x));
	}
	return 0;
}

add里面的for从一到500000就不对,从一到n就对了 不懂awa

2021/7/11 00:36
加载中...