Submission #1193728

#TimeUsernameProblemLanguageResultExecution timeMemory
1193728Hamed_GhaffariFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
93 ms5704 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; const int MXN = 2e5+5; int n; ll fen[MXN]; inline void updx(int l, int r, int x) { for(; l<=n; l+=l&-l) fen[l] += x; for(++r; r<=n; r+=r&-r) fen[r] -= x; } inline ll getx(int i) { ll res=0; for(; i>0; i-=i&-i) res += fen[i]; return res; } int s, t; inline ll contrib(int i) { if(i==n) return 0; ll a = getx(i), b = getx(i+1); if(a<b) return (a-b)*s; return (a-b)*t; } ll ans; inline void upd(int l, int r, int x) { ans -= contrib(l-1) + contrib(r); updx(l, r, x); ans += contrib(l-1) + contrib(r); } int q; int32_t main() { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); cin >> n >> q >> s >> t; for(int i=0, a; i<=n; i++) { cin >> a; if(i) upd(i, i, a); } while(q--) { int l, r, x; cin >> l >> r >> x; upd(l, r, x); cout << ans << '\n'; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...