Submission #365810

#TimeUsernameProblemLanguageResultExecution timeMemory
365810inluminasFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
834 ms15980 KiB
#include"bits/stdc++.h" using namespace std; #define ll long long #define endl "\n" #define fastio ios_base::sync_with_stdio(false) const int lmt=2e5+5; ll a[lmt],n,q,s,t,ans=0,ad[3*lmt]; void updet(int at,int L,int R,int l,int r,ll u){ if(r<L || R<l) return; if(l<=L && R<=r){ ad[at]+=u; return; } int mid=(L+R)/2; updet(at*2,L,mid,l,r,u); updet(at*2+1,mid+1,R,l,r,u); } ll query(int at,int L,int R,int pos){ if(pos<L || R<pos) return 0LL; if(L==R){ return a[L]+ad[at]; } int mid=(L+R)/2; if(pos<=mid){ return query(at*2,L,mid,pos)+ad[at]; }else{ return query(at*2+1,mid+1,R,pos)+ad[at]; } } int main(){ fastio; cin>>n>>q>>s>>t; for(int i=0;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ if(a[i-1]<a[i]){ ans+=((a[i-1]-a[i])*s); }else{ ans+=((a[i-1]-a[i])*t); } } while(q--){ ll l,r,x; cin>>l>>r>>x; ll b=query(1,1,n,l-1),c=query(1,1,n,l); if(b<c){ ans-=((b-c)*s); }else{ ans-=((b-c)*t); } c+=x; if(b<c){ ans+=((b-c)*s); }else{ ans+=((b-c)*t); } if(r<n){ b=query(1,1,n,r),c=query(1,1,n,r+1); if(b<c){ ans-=((b-c)*s); }else{ ans-=((b-c)*t); } b+=x; if(b<c){ ans+=((b-c)*s); }else{ ans+=((b-c)*t); } } updet(1,1,n,l,r,x); cout<<ans<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...