#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |