제출 #1179584

#제출 시각아이디문제언어결과실행 시간메모리
1179584user736482Foehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
62 ms7308 KiB
#pragma GCC optimize("O3")
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
#define pb push_back
#define ff first
#define ss second
#define MOD 1000000009
#define INF 1000000019
#define INFL 1000000000000000099LL

ll n,q,s,t,a,b,c,ans;
ll co[1000007],dif[1000007];

int main()
{
    ios_base::sync_with_stdio(0);cin.tie(0);
    cin>>n>>q>>t>>s;
    n++;
    for(ll i=0;i<n;i++){
        cin>>co[i];
    }
    for(ll i=0;i<n-1;i++){
        dif[i]=co[i]-co[i+1];
        if(dif[i]>0){
            ans+=dif[i]*s;
        }
        else
            ans+=dif[i]*t;
    }
   // cout<<ans;
    for(ll i=0;i<q;i++){
     //   for(ll j=0;j<=n;j++)cout<<dif[j]<<" ";
        cin>>a>>b>>c;
        a--;
        b--;
        if(dif[a]>0){
            ans-=dif[a]*s;
        }
        else
            ans-=dif[a]*t;
        if(dif[b+1]>0){
            ans-=dif[b+1]*s;
        }
        else
            ans-=dif[b+1]*t;
        dif[a]-=c;
        if(b+1<n-1)
        dif[b+1]+=c;
      //  cout<<ans;
        if(dif[a]>0){
            ans+=dif[a]*s;
        }
        else
            ans+=dif[a]*t;
        if(dif[b+1]>0){
            ans+=dif[b+1]*s;
        }
        else
            ans+=dif[b+1]*t;
        cout<<ans<<"\n";    
    }
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...