比赛 2025.3.6 评测结果 AAAAAAAAAA
题目名称 WHZ 的序列 最终得分 100
用户昵称 健康铀 运行时间 2.597 s
代码语言 C++ 内存使用 6.86 MiB
提交时间 2025-03-06 19:30:53
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long a[200010],n,t[200010][5],b[200010],q,top,c1[200010],c2[200010];
int main(){
	    ios::sync_with_stdio(false);
	    cin.tie(0);
	freopen("whz_sequence.in","r",stdin);
	freopen("whz_sequence.out","w",stdout);
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>a[i];
		b[i]=a[i]-a[i-1];
		c1[i]=c1[i-1],c2[i]=c2[i-1];
		if(i%2!=0)
		c1[i]+=a[i];
		else
		c2[i]+=a[i];
	}
	cin>>q;
	while(q--){
		long long x,y;
		int s;
		cin>>s;
		if(s==1){
			long long xx,yy,d;
			cin>>xx>>yy>>d;
			x=min(xx,yy);
			y=max(xx,yy);
			t[++top][1]=x,t[top][2]=y,t[top][3]=d;
			if(top>450){
				while(top!=0){
					long long l=t[top][1],r=t[top][2],z=t[top][3];
					b[l]+=z,b[r+1]-=z;
					top--;
				}
				for(long long i=1;i<=n;i++){
					a[i]=a[i-1]+b[i];
					c1[i]=c1[i-1],c2[i]=c2[i-1];
					if(i%2!=0)
					c1[i]+=a[i];
					else
					c2[i]+=a[i];
				}
				
			}
		}
		else{
			long long xx,yy;
			cin>>xx>>yy;
			x=min(xx,yy);
			y=max(xx,yy);
			long long ans1=c1[y]-c1[x-1],ans2=c2[y]-c2[x-1];
			for(long long i=1;i<=top;i++){
				long long l=t[i][1],r=t[i][2],z=t[i][3];
				if(l>y||r<x){
					continue;
				}
				long long rr=min(r,y),ll=max(x,l);
				long long res=(rr-ll)+1;
				if(res%2==0){
					ans1+=(res/2)*z;
					ans2+=(res/2)*z;
				}
				else{
					if(ll%2==1){
						ans1+=(res/2+1)*z;
						ans2+=(res/2)*z;
					}
					else{
						ans2+=(res/2+1)*z;
						ans1+=(res/2)*z;
					}
				}
			}
			if(x%2==1){
				cout<<ans1-ans2<<endl;
			}
			else{
				cout<<ans2-ans1<<endl;
			}
			
		}
	}
	return 0;
}