Submission #735289

#TimeUsernameProblemLanguageResultExecution timeMemory
735289tigarFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
112 ms17828 KiB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

ll n, q, s, t;
ll a[200020], l[200020], r[200020], x[200020], diff[200020];

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);
    cin>>n>>q>>s>>t;
    for(int i=0; i<=n; i++)
    {
        cin>>a[i];
        diff[i]=a[i]-a[max(i-1, 0)];
    }
    for(int i=0; i<q; i++)cin>>l[i]>>r[i]>>x[i];

    ll windspid=0;
    for(int i=1; i<=n; i++)
    {
        if(diff[i]>0)windspid-=s*diff[i];
        else windspid-=t*diff[i];
    }

    for(int i=0; i<q; i++)
    {
        if(diff[l[i]]>0)windspid+=s*diff[l[i]];
        else windspid+=t*diff[l[i]];

        diff[l[i]]+=x[i];

        if(diff[l[i]]>0)windspid-=s*diff[l[i]];
        else windspid-=t*diff[l[i]];

        if(r[i]<n)
        {
            if(diff[r[i]+1]>0)windspid+=s*diff[r[i]+1];
            else windspid+=t*diff[r[i]+1];

            diff[r[i]+1]-=x[i];

            if(diff[r[i]+1]>0)windspid-=s*diff[r[i]+1];
            else windspid-=t*diff[r[i]+1];
        }
        cout<<windspid<<"\n";
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...