Submission #1277003

#TimeUsernameProblemLanguageResultExecution timeMemory
1277003LmaoLmaoFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
98 ms7312 KiB
#include<bits/stdc++.h> #define int long long #define fi first #define se second using namespace std; using ll = long long; using ii = pair<int,int>; using aa = array<int,3>; int a[200005]; int F[200005]; void update(int pos,int val) { for(int i=pos;i<=200000;i+=i & -i) { F[i]+=val; } } int get(int pos) { int res=0; for(int i=pos;i>0;i-=i & -i) { res+=F[i]; } return res; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int n,q,s,t; cin >> n >> q >> s >> t; int ans=0; for(int i=0;i<=n;i++) { cin >> a[i]; if(i>=1) { if(a[i-1]<a[i]) { ans-=(a[i]-a[i-1])*s; } else { ans+=(a[i-1]-a[i])*t; } } } //cout << ans << endl; while(q--) { int l,r,x; cin >> l >> r >> x; if(a[l-1]+get(l-1)<a[l]+get(l)) { ans+=(a[l]+get(l)-a[l-1]-get(l-1))*s; } else { ans+=(a[l]+get(l)-a[l-1]-get(l-1))*t; } //cout << ans << endl; if(r!=n) { if(a[r]+get(r)<a[r+1]+get(r+1)) { ans+=(a[r+1]+get(r+1)-a[r]-get(r))*s; } else { ans+=(a[r+1]+get(r+1)-a[r]-get(r))*t; } } update(l,x); update(r+1,-x); if(a[l-1]+get(l-1)<a[l]+get(l)) { ans-=(a[l]+get(l)-a[l-1]-get(l-1))*s; } else { ans-=(a[l]+get(l)-a[l-1]-get(l-1))*t; } //cout << ans << endl; if(r!=n) { if(a[r]+get(r)<a[r+1]+get(r+1)) { ans-=(a[r+1]+get(r+1)-a[r]-get(r))*s; } else { ans-=(a[r+1]+get(r+1)-a[r]-get(r))*t; } } cout << ans << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...