本地对拍都是对的,提交全WA
查看原帖
本地对拍都是对的,提交全WA
596945
nahidaa楼主2024/10/3 12:06
#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll nq,n,m,x,y,val,ka_len,a[100005],ans;
struct kuai{
	ll l,r,val,lazy;
}ka[500];
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		cin>>a[i];
	}
	nq=sqrt(n);
	ka_len=nq;
	for(int i=1;i<=ka_len;++i){
		ka[i].l=(i-1)*nq+1,ka[i].r=i*nq;
		for(int j=ka[i].l;j<=ka[i].r;++j){
			ka[i].val+=a[j];
		}
	}
	if(ka[nq].r<n){
		ka[++ka_len].l=(ka_len-1)*nq+1,ka[ka_len].r=n;
		for(int j=ka[ka_len].l;j<=ka[ka_len].r;++j){
			ka[ka_len].val+=a[j];
		}
	}
	for(int i=1;i<=m;++i){
		cin>>x;
		if(x==1){
			cin>>x>>y>>val;
			for(int j=1;j<=ka_len;++j){
				if(ka[j].l>=x&&ka[j].r<=y){
					ka[j].lazy+=val;
				}else if(ka[j].l<=x||ka[j].r>=y){
					int L=max(ka[j].l,x),R=min(ka[j].r,y);
					for(int k=L;k<=R;++k){
						a[k]+=val;
						ka[j].val+=val;
					}
				}
			}
		}else{
			cin>>x>>y;
			ans=0;
			for(int j=1;j<=ka_len;++j){
				if(ka[j].l>=x&&ka[j].r<=y){
					ans+=ka[j].val+(ka[j].r-ka[j].l+1)*ka[j].lazy;
				}else if(ka[j].l<=x||ka[j].r>=y){
					int L=max(ka[j].l,x),R=min(ka[j].r,y);
					for(int k=L;k<=R;++k){
						ans+=a[k];
						ans+=ka[j].lazy;
					}
				}
			}
			cout<<ans<<"\n";
		}
	}
}
2024/10/3 12:06
加载中...