比赛 2025.5.5 评测结果 WWAAWWTTTT
题目名称 愈加善良的希望 最终得分 20
用户昵称 郑霁桓 运行时间 8.156 s
代码语言 C++ 内存使用 5.04 MiB
提交时间 2025-05-05 11:37:34
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
long long n,a[1000005],m,x[1000005],y[1000005],z[1000005],k[1000005],t,lz;
long long b[1000005],s,p1,p2,mx=-1e18;
int main(){
    freopen("hod.in","r",stdin);
    freopen("hod.out","w",stdout);
    ios::sync_with_stdio(false);
    cin>>n;
    for(long long i=1;i<=n;i++) cin>>a[i];
    cin>>m;
    for(long long i=1;i<=m;i++){
        cin>>x[i]>>y[i]>>z[i];
        if(!x[i]) cin>>k[i];
        if(y[i]!=1||z[i]!=n) t=1;
    }
    if(!t){
        for(long long i=1;i<=n;i++) a[i]+=a[i-1];
        for(long long i=1;i<=n;i++){
            if(a[i]>mx) mx=a[i],p1=i,p2=i;
            else if(a[i]==mx) p2=i;
        }
        t=0;
        for(long long i=1;i<=m;i++){
            if(!x[i]) lz+=k[i];
            else if(lz>0) t++,cout<<mx+lz*p2<<"\n";
            else t++,cout<<mx+lz*p1<<"\n";
        }
    }else{
        for(long long i=1;i<=n;i++) b[i]=a[i]-a[i-1],a[i-1]=0;
        a[n]=0;
        for(long long i=1;i<=m;i++){
            if(x[i]==0) b[y[i]]+=k[i],b[z[i]+1]-=k[i];
            else{
                for(long long j=1;j<=n;j++) a[j]=b[j]+a[j-1];
                for(long long i=1;i<=n;i++) b[i]=a[i]-a[i-1];
                s=0;
                for(long long j=1;j<=y[i];j++) s+=a[j];
                for(long long j=y[i]+1;j<=z[i];j++){
                    if(a[j]<0) break;
                    s+=a[j];
                }
                cout<<s<<"\n"; 
            }
        }
    }
    return 0;
}