#include <bits/stdc++.h>
using namespace std;
#define int long long
int bit[2][112345];
void init(int n){
for(int i=1; i<=n; i++){
bit[0][i] = 0;
bit[1][i] = 0;
}
}
//auxiliar
void update(int *bit, int idx, int val, int n){
for(int i = idx; i <= n; i += i&-i){
bit[i]+=val;
}
}
//auxiliar
int query(int *bit, int idx){
int ans = 0;
for(int i=idx; i>0; i -= i&-i){
ans += bit[i];
}
return ans;
}
void range_update(int l, int r, int val, int n){
update(bit[0], l, val, n);
update(bit[0], r+1, -val, n);
update(bit[1], l, val*(l-1), n);
update(bit[1], r+1, -val*r, n);
}
int prefix_query(int idx){
return query(bit[0],idx)*idx - query(bit[1], idx);
}
int range_query(int l, int r){
return prefix_query(r) - prefix_query(l-1);
}
int32_t main(){
ios_base::sync_with_stdio(false);
int n,q,s,t;
cin >> n >> q >> s >> t;
n++;
init(n);
int v[n];
for(int i=1; i<=n; i++){
cin >> v[i];
range_update(i,i,v[i],n);
}
int ans = 0;
for(int i=1; i<n; i++){
if(v[i] < v[i+1]) ans -= abs(v[i+1]-v[i])*s;
else ans += abs(v[i+1]-v[i])*t;
}
while(q--){
int l,r,x;
cin >> l >> r >> x;
l++, r++;
if(l > 1){
v[l-1] = range_query(l-1, l-1);
v[l] = range_query(l,l);
if(v[l-1] < v[l]) ans += abs(v[l] - v[l-1])*s;
else ans -= abs(v[l] - v[l-1])*t;
if(v[l-1] < v[l]+x) ans -= abs(v[l]+x - v[l-1])*s;
else ans += abs(v[l]+x - v[l-1])*t;
}
if(r < n){
v[r] = range_query(r, r);
v[r+1] = range_query(r+1,r+1);
if(v[r] < v[r+1]) ans += abs(v[r] - v[r+1])*s;
else ans -= abs(v[r] - v[r+1])*t;
if(v[r]+x < v[r+1]) ans -= abs(v[r]+x - v[r+1])*s;
else ans += abs(v[r]+x - v[r+1])*t;
}
range_update(l,r,x,n);
cout << ans << endl;
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
3932 KB |
Output is correct |
2 |
Correct |
0 ms |
3932 KB |
Output is correct |
3 |
Correct |
9 ms |
3932 KB |
Output is correct |
4 |
Correct |
6 ms |
3932 KB |
Output is correct |
5 |
Correct |
6 ms |
3932 KB |
Output is correct |
6 |
Correct |
0 ms |
3932 KB |
Output is correct |
7 |
Correct |
3 ms |
3932 KB |
Output is correct |
8 |
Correct |
3 ms |
3932 KB |
Output is correct |
9 |
Correct |
0 ms |
3932 KB |
Output is correct |
10 |
Correct |
3 ms |
3932 KB |
Output is correct |
11 |
Correct |
6 ms |
3932 KB |
Output is correct |
12 |
Correct |
13 ms |
3932 KB |
Output is correct |
13 |
Correct |
0 ms |
3932 KB |
Output is correct |
14 |
Correct |
9 ms |
3932 KB |
Output is correct |
15 |
Correct |
6 ms |
3932 KB |
Output is correct |
16 |
Correct |
9 ms |
3932 KB |
Output is correct |
17 |
Correct |
0 ms |
3932 KB |
Output is correct |
18 |
Correct |
0 ms |
3932 KB |
Output is correct |
19 |
Correct |
0 ms |
3932 KB |
Output is correct |
20 |
Correct |
0 ms |
3932 KB |
Output is correct |
21 |
Correct |
0 ms |
3932 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Runtime error |
0 ms |
3932 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
9 ms |
3932 KB |
Output is correct |
2 |
Correct |
0 ms |
3932 KB |
Output is correct |
3 |
Correct |
9 ms |
3932 KB |
Output is correct |
4 |
Correct |
6 ms |
3932 KB |
Output is correct |
5 |
Correct |
6 ms |
3932 KB |
Output is correct |
6 |
Correct |
0 ms |
3932 KB |
Output is correct |
7 |
Correct |
3 ms |
3932 KB |
Output is correct |
8 |
Correct |
3 ms |
3932 KB |
Output is correct |
9 |
Correct |
0 ms |
3932 KB |
Output is correct |
10 |
Correct |
3 ms |
3932 KB |
Output is correct |
11 |
Correct |
6 ms |
3932 KB |
Output is correct |
12 |
Correct |
13 ms |
3932 KB |
Output is correct |
13 |
Correct |
0 ms |
3932 KB |
Output is correct |
14 |
Correct |
9 ms |
3932 KB |
Output is correct |
15 |
Correct |
6 ms |
3932 KB |
Output is correct |
16 |
Correct |
9 ms |
3932 KB |
Output is correct |
17 |
Correct |
0 ms |
3932 KB |
Output is correct |
18 |
Correct |
0 ms |
3932 KB |
Output is correct |
19 |
Correct |
0 ms |
3932 KB |
Output is correct |
20 |
Correct |
0 ms |
3932 KB |
Output is correct |
21 |
Correct |
0 ms |
3932 KB |
Output is correct |
22 |
Runtime error |
0 ms |
3932 KB |
Execution killed with signal 11 (could be triggered by violating memory limits) |
23 |
Halted |
0 ms |
0 KB |
- |