Submission #751095

#TimeUsernameProblemLanguageResultExecution timeMemory
751095vjudge1Foehn Phenomena (JOI17_foehn_phenomena)C++17
100 / 100
400 ms11540 KiB
#include<bits/stdc++.h>
using namespace std;

void solve(){
    long long n, q, s, t, suhu;
    cin >> n >> q >> s >> t;
    long long diff[n];
    long long a, b;
    cin >> a;
    suhu=0;
    for(int i=0;i<n;i++){
        cin >> b;
        diff[i]=a-b;
        if(diff[i]<0){
            suhu+=diff[i]*s;
        }else{
            suhu+=diff[i]*t;
        }
        a=b;
    }
    for(int i=0; i<q; i++){
        long long l, r, x;
        cin >> l >> r >> x;
        if(diff[l-1]-x>=0 && diff[l-1]<=0){
            suhu-=diff[l-1]*s;
            suhu+=(diff[l-1]-x)*t;
            diff[l-1]-=x;
        }else if(diff[l-1]-x<=0 && diff[l-1]<=0){
            suhu-=x*s;
            diff[l-1]-=x;
        }else if(diff[l-1]-x<=0 && diff[l-1]>=0){
            suhu-=diff[l-1]*t;
            suhu+=(diff[l-1]-x)*s;
            diff[l-1]-=x;
        }else if(diff[l-1]-x>=0 && diff[l-1]>=0){
            suhu-=x*t;
            diff[l-1]-=x;
        }
        if(r<n){
        if(diff[r]+x>=0 && diff[r]<=0){
            suhu-=diff[r]*s;
            suhu+=(diff[r]+x)*t;
            diff[r]+=x;
        }else if(diff[r]+x<=0 && diff[r]<=0){
            suhu+=x*s;
            diff[r]+=x;
        }else if(diff[r]+x<=0 && diff[r]>=0){
            suhu-=diff[r]*t;
            suhu+=(diff[r]+x)*s;
            diff[r]+=x;
        }else if(diff[r]+x>=0 && diff[r]>=0){
            suhu+=x*t;
            diff[r]+=x;
        }
        }
        cout << suhu << endl;
    }
}

int main(){
    ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    solve();
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...