#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const int maxn = 2e5 + 5;
ll a[maxn],n,q,s,t,fem[4*maxn], diff[4 * maxn];
void add(int i, int val)
{
for (; i <= n; i += i & -i) fem[i] += val;
}
ll query(int i)
{
ll res = 0;
for (; i > 0; i -= i & -i) res += fem[i];
return res;
}
ll windUpd(ll x)
{
if (x > 0) return -s * x;
else return -x * t;
}
void update(int id, ll val)
{
if (id < 1 || id > n) return;
ll old = windUpd(diff[id]);
diff[id] += val;
ll cur = windUpd(diff[id]);
add(id, cur - old);
}
int main()
{
cin >> n >> q >> s >> t;
cin >> a[0];
for (int i=1;i<=n;i++) cin >> a[i];
for (int i=1;i<=n;i++) diff[i] = a[i] - a[i-1];
for (int i = 1; i <= n; i++) add(i, windUpd(diff[i]));
while (q--){
int l,r; ll x;
cin >> l >> r >> x;
update(l,x);
if (r < n) update(r+1,-x);
cout << query(n) << endl;
}
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |