Submission #753758

#TimeUsernameProblemLanguageResultExecution timeMemory
753758vjudge1Foehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
539 ms13016 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; ll n, q, s, t, l, r, x, ans; ll a[200010], diff[200010]; int main(){ cin >> n >> q >> s >> t; for(int i=0; i<=n; i++){ cin >>a[i]; diff[i]=a[i]-a[i-1]; if(diff[i]>0) ans-=diff[i]*s; else ans -=diff[i]*t; } // cout << ans << endl; while(q--){ cin >> l >> r >> x; ll lprev, rprev, lnow, rnow; if(diff[l]>0) lprev=-(diff[l]*s); else lprev=-(diff[l]*t); if(diff[r+1]>0) rprev=-(diff[r+1]*s); else rprev=-(diff[r+1]*t); if(r+1>n) rprev=0; // for(int i=0; i<=n; i++) cout << diff[i] << " "; cout << endl; // cout << lprev <<" " << rprev << endl; diff[l]+=x; diff[r+1]-=x; if(diff[l]>0) lnow=-(diff[l]*s); else lnow=-(diff[l]*t); if(diff[r+1]>0) rnow=-(diff[r+1]*s); else rnow=-(diff[r+1]*t); if(r+1>n) rnow=0; // for(int i=0; i<=n; i++) cout << diff[i] << " "; cout << endl; // cout << lnow <<" " << rnow << endl; ans+=(lnow-lprev)+(rnow-rprev); cout << ans << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...