还是9分!!!
查看原帖
还是9分!!!
1008463
xiucai楼主2024/7/15 14:58
#include<bits/stdc++.h>
using namespace std;
#define int long long 
#define MAXN 100010
int n,m,p;
int c[MAXN],a[MAXN],b1[MAXN],b2[MAXN];
int op;
int low(register int x){
	return x&-x;
}
void add(int x,int y){
	int id=x;
	while(x<=n){
		b1[x]+=y;
		b2[x]+=y*id;
		x+=low(x);
	}	
}
int que(int x){
	int id=x;
	int sum=0;
	while(x!=0){
		sum+=(id+1)*b1[x]-b2[x];
		x-=low(x); 
	} 
	return sum;
}

inline void read(register int &a){
	a=0;
	char c;
	while((c=getchar())<48);
	do a=(a<<3)+(a<<1)+(c^48);
	while((c=getchar())>47);
}
signed main(){
	read(n);
	read(m);
	for(int i=1;i<=n;i++){
		read(a[i]);
		c[i]=a[i]-a[i-1];
		add(i,c[i]-c[i-1]);
	}
	for(int i=1;i<=m;i++){
		read(op);
		int l,r,k,d; 
		if(op==1){																															
			read(l),read(r),read(k),read(d);
			add(l,k);
			add(l+1,d-k);
			add(r+1,-(r-l+1)*d-k);
			add(r+2,k+(r-1)*d);
		}if(op==2){
			read(p);
			cout<<que(p)<<endl;
		}
	}
	return 0;
}
2024/7/15 14:58
加载中...