样例没过,求助
查看原帖
样例没过,求助
939193
hehedago_QAQ_楼主2023/10/14 21:16
#include<bits/stdc++.h>
using namespace std;
int n,m,C[100001];
int lowbit(int n){
	return n&-n;
}
void update(int i,long long val){
	while(i<=n){
		C[i]+val;
		i+=lowbit(i);
	}
}
long long sum(int i){
	long long ret=0;
	while(i>0){
		ret+=C[i];
		i-=lowbit(i);
	}
	return ret;
}
int main(){
	scanf("%d%d",&n,&m);
	long long b=0,a;
	for(int i=1;i<=n;i++){
		scanf("%lld",&a);
		update(i,a-b);
		b=a;
	}
	while(m--){
		int p;
		scanf("%d",&p);
		if(p==1){
			int x,y;
			long long k;
			scanf("%d%d%lld",&x,&y,&k);
			update(x,k);
			update(y+1,-k);
		}
		else{
			int x;
			scanf("%d",&x);
			printf("%lld\n",sum(x));
		}
	}
	return 0;
} 

哪错了有没有dalao帮帮忙

2023/10/14 21:16
加载中...