比赛 2024暑假C班集训5 评测结果 AAAAAAAAAA
题目名称 焚风现象 最终得分 100
用户昵称 小金 运行时间 0.787 s
代码语言 C++ 内存使用 6.15 MiB
提交时间 2024-07-05 11:13:19
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int n,q;
long long a[200010],b[200010],s,t,up,down,ans;
int main()
{
    freopen("foehn.in","r",stdin);
    freopen("foehn.out","w",stdout);
    scanf("%d%d%lld%lld",&n,&q,&s,&t);
    scanf("%lld",&a[0]);
    for(int i=1;i<=n;i++)
    {
        scanf("%lld",&a[i]);
        b[i]=a[i]-a[i-1];
    }
    for(int i=0;i<=n;i++)
    {
        if(b[i]>=0) up+=b[i];
        else down+=b[i];
    }
    for(int i=1;i<=q;i++)
    {
        int l,r;
        long long x;
        scanf("%d%d%lld",&l,&r,&x);
        if(b[l]<0) down-=b[l];
        else up-=b[l];
        if(r+1<=n)
        {
            if(b[r+1]<0) down-=b[r+1];
            else up-=b[r+1];
        }
        b[l]+=x;
        b[r+1]-=x;
        if(b[l]<0) down+=b[l];
        else up+=b[l];
        if(r+1<=n)
        {
            if(b[r+1]<0) down+=b[r+1];
            else up+=b[r+1];
        }
        ans=abs(down*t)-(up*s);
        printf("%lld\n",ans); 
    }
    return 0;
}