Submission #1318582

#TimeUsernameProblemLanguageResultExecution timeMemory
1318582bahaktlFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
68 ms7296 KiB
#include <bits/stdc++.h>

#define int long long 
#define pb push_back
using namespace std;

const int N=2e5+10;
const int inf=1e18;
const int mod=1e9+7;

int a[N],d[N];

signed main() {
    ios_base::sync_with_stdio(NULL);
    cin.tie(NULL);
    int T=1;
    // cin>>T;
    while(T--) {
        int n,q,s,t;
        cin>>n>>q>>s>>t;
        for(int i=1;i<=n+1;i++) {
            cin>>a[i];
        }
        int ans=0;
        for(int i=2;i<=n+1;i++) {
            d[i]=a[i-1]-a[i];
            if(d[i]<0) {ans+=d[i]*s;}
            else {ans+=d[i]*t;}
        }   
        while(q--) {
            int l,r,x;
            cin>>l>>r>>x;
            l++,r++;
            if(d[l]<0) {
                ans-=d[l]*s;
                d[l]-=x;
                if(d[l]>0) ans+=d[l]*t;
                else ans+=d[l]*s;
            }
            else {
                ans-=d[l]*t;
                d[l]-=x;
                if(d[l]<0) ans+=d[l]*s;
                else ans+=d[l]*t;
            }
            if(r==n+1) {
                cout<<ans<<"\n";
                continue;
            }
            if(d[r+1]<0) {
                ans-=d[r+1]*s;
                d[r+1]+=x;
                if(d[r+1]>0) ans+=d[r+1]*t;
                else ans+=d[r+1]*s;
            }
            else {
                ans-=d[r+1]*t;
                d[r+1]+=x;
                if(d[r+1]<0) ans+=d[r+1]*s;
                else ans+=d[r+1]*t;
            }
            cout<<ans<<"\n";
        }
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...