#include<bits/stdc++.h>
using namespace std;
#define int long long
const int MAXN=2e5+7;
struct node{
int soma,altura;
};
int sobe,desce;
node seg[4*MAXN];
int arr[MAXN];
node merge(node a, node b){
int retorna=0;
retorna+=a.soma+b.soma;
retorna-=(a.altura*(a.altura>0)*sobe+a.altura*(a.altura<0)*desce);
retorna-=(b.altura*(b.altura>0)*sobe+b.altura*(b.altura<0)*desce);
return{retorna,0};
}
void build(int pos, int ini, int fim){
if(ini==fim){
seg[pos]={0,arr[ini]-arr[ini-1]};
return;
}
int m=(ini+fim)/2;
int e=2*pos,d=2*pos+1;
build(e,ini,m);
build(d,m+1,fim);
seg[pos]=merge(seg[e],seg[d]);
}
void query(int pos, int ini, int fim,int val, int ind,int direita){
if(ini>ind || fim<ind){
return;
}
if(ini==fim){
seg[pos].altura+=val*direita;
return;
}
int m=(ini+fim)/2;
int e=2*pos,d=2*pos+1;
query(e,ini,m,val,ind,direita);
query(d,m+1,fim,val,ind,direita);
seg[pos]=merge(seg[e],seg[d]);
}
int32_t main(){
int n,q;
cin>>n>>q>>sobe>>desce;
for(int i=0;i<=n;i++){
cin>>arr[i];
}
build(1,1,n);
while(q--){
int a,b,val;
cin>>a>>b>>val;
if(a!=0)query(1,1,n,val,a,1);
if(b!=n)query(1,1,n,val,b+1,-1);
cout<<seg[1].soma<<"\n";
}
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
2396 KB |
Output is correct |
2 |
Correct |
5 ms |
2560 KB |
Output is correct |
3 |
Correct |
5 ms |
2396 KB |
Output is correct |
4 |
Correct |
5 ms |
2504 KB |
Output is correct |
5 |
Correct |
5 ms |
2396 KB |
Output is correct |
6 |
Correct |
5 ms |
2396 KB |
Output is correct |
7 |
Correct |
5 ms |
2392 KB |
Output is correct |
8 |
Correct |
5 ms |
2396 KB |
Output is correct |
9 |
Correct |
5 ms |
2540 KB |
Output is correct |
10 |
Correct |
5 ms |
2420 KB |
Output is correct |
11 |
Correct |
5 ms |
2500 KB |
Output is correct |
12 |
Correct |
5 ms |
2392 KB |
Output is correct |
13 |
Correct |
5 ms |
2552 KB |
Output is correct |
14 |
Correct |
5 ms |
2396 KB |
Output is correct |
15 |
Correct |
5 ms |
2396 KB |
Output is correct |
16 |
Correct |
5 ms |
2396 KB |
Output is correct |
17 |
Correct |
5 ms |
2396 KB |
Output is correct |
18 |
Correct |
5 ms |
2396 KB |
Output is correct |
19 |
Incorrect |
1 ms |
2552 KB |
Output isn't correct |
20 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
509 ms |
15180 KB |
Output is correct |
2 |
Correct |
517 ms |
15924 KB |
Output is correct |
3 |
Correct |
529 ms |
16488 KB |
Output is correct |
4 |
Correct |
504 ms |
15732 KB |
Output is correct |
5 |
Correct |
525 ms |
16680 KB |
Output is correct |
6 |
Correct |
428 ms |
16232 KB |
Output is correct |
7 |
Correct |
427 ms |
16272 KB |
Output is correct |
8 |
Correct |
483 ms |
16716 KB |
Output is correct |
9 |
Correct |
493 ms |
17140 KB |
Output is correct |
10 |
Correct |
526 ms |
15704 KB |
Output is correct |
11 |
Correct |
443 ms |
16396 KB |
Output is correct |
12 |
Correct |
434 ms |
16940 KB |
Output is correct |
13 |
Correct |
423 ms |
17160 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
2396 KB |
Output is correct |
2 |
Correct |
5 ms |
2560 KB |
Output is correct |
3 |
Correct |
5 ms |
2396 KB |
Output is correct |
4 |
Correct |
5 ms |
2504 KB |
Output is correct |
5 |
Correct |
5 ms |
2396 KB |
Output is correct |
6 |
Correct |
5 ms |
2396 KB |
Output is correct |
7 |
Correct |
5 ms |
2392 KB |
Output is correct |
8 |
Correct |
5 ms |
2396 KB |
Output is correct |
9 |
Correct |
5 ms |
2540 KB |
Output is correct |
10 |
Correct |
5 ms |
2420 KB |
Output is correct |
11 |
Correct |
5 ms |
2500 KB |
Output is correct |
12 |
Correct |
5 ms |
2392 KB |
Output is correct |
13 |
Correct |
5 ms |
2552 KB |
Output is correct |
14 |
Correct |
5 ms |
2396 KB |
Output is correct |
15 |
Correct |
5 ms |
2396 KB |
Output is correct |
16 |
Correct |
5 ms |
2396 KB |
Output is correct |
17 |
Correct |
5 ms |
2396 KB |
Output is correct |
18 |
Correct |
5 ms |
2396 KB |
Output is correct |
19 |
Incorrect |
1 ms |
2552 KB |
Output isn't correct |
20 |
Halted |
0 ms |
0 KB |
- |