#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N=200050;
int n,q;
ll s,t,a[N],st[N*20],lzy[N*20];
void Build(int c,int l,int r){
if(l>r)return;
if(l==r){st[c]=a[l];return;}
int mid=l+r>>1;
Build(c*2+1,l,mid);Build(c*2+2,mid+1,r);
st[c]=st[c*2+1]+st[c*2+2];
}
ll Get(int c,int l,int r,int ss,int se){
if(lzy[c]!=0){
st[c]+=lzy[c]*(r-l+1);
lzy[c*2+1]+=lzy[c],lzy[c*2+2]+=lzy[c],lzy[c]=0;
}
if(l>r||l>se||r<ss)return (ll)0;
if(l>=ss&&r<=se)return st[c];
int mid=l+r>>1;
return Get(c*2+1,l,mid,ss,se)+Get(c*2+2,mid+1,r,ss,se);
}
void Add(int c,int l,int r,int ss,int se,ll val){
if(l>r||r<ss||l>se)return;
if(l>=ss&&r<=se){lzy[c]+=val;return;}
int mid=l+r>>1;
Add(c*2+1,l,mid,ss,se,val);
Add(c*2+2,mid+1,r,ss,se,val);
}
ll B(int id){return Get(0,0,n,id,id);}
mt19937 rng(time(0));
int main(){
scanf("%i %i %lld %lld",&n,&q,&s,&t);
for(int i=0;i<=n;i++)scanf("%lld",&a[i]);
//n=rng()%10+1,q=rng()%10+1;
//s=rng()%10+1,t=rng()%10+1;
//for(int i=1;i<=n;i++)a[i]=rng()%100+1;
ll ans=0;
for(int i=0;i<n;i++){
if(a[i]<a[i+1])ans-=(a[i+1]-a[i])*s;
else ans+=(a[i]-a[i+1])*t;
}
Build(0,0,n);
//ll bans=ans;
while(q--){
int l,r;
//if(l>r)swap(l,r);
ll val;
scanf("%i %i %lld",&l,&r,&val);
if(l>0){
ll x=B(l-1),y=B(l);
if(x>y)ans-=(x-y)*t;
else ans+=(y-x)*s;
}
if(r<n){
ll x=B(r),y=B(r+1);
if(x>y)ans-=(x-y)*t;
else ans+=(y-x)*s;
}
Add(0,0,n,l,r,val);
if(l>0){
ll x=B(l-1),y=B(l);
if(x>y)ans+=(x-y)*t;
else ans-=(y-x)*s;
}
if(r<n){
ll x=B(r),y=B(r+1);
if(x>y)ans+=(x-y)*t;
else ans-=(y-x)*s;
}
printf("%lld\n",ans);
//printf("bans:%lld\n",bans);
/*if(ans!=bans){
printf("WA\n");
printf("%lld %lld\n",ans,bans);
}*/
}
return 0;
}
Compilation message
foehn_phenomena.cpp: In function 'void Build(int, int, int)':
foehn_phenomena.cpp:10:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
10 | int mid=l+r>>1;
| ~^~
foehn_phenomena.cpp: In function 'long long int Get(int, int, int, int, int)':
foehn_phenomena.cpp:21:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
21 | int mid=l+r>>1;
| ~^~
foehn_phenomena.cpp: In function 'void Add(int, int, int, int, int, long long int)':
foehn_phenomena.cpp:27:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
27 | int mid=l+r>>1;
| ~^~
foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
34 | scanf("%i %i %lld %lld",&n,&q,&s,&t);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:35:31: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
35 | for(int i=0;i<=n;i++)scanf("%lld",&a[i]);
| ~~~~~^~~~~~~~~~~~~~
foehn_phenomena.cpp:50:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
50 | scanf("%i %i %lld",&l,&r,&val);
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
492 KB |
Output is correct |
2 |
Correct |
5 ms |
492 KB |
Output is correct |
3 |
Correct |
5 ms |
492 KB |
Output is correct |
4 |
Correct |
5 ms |
492 KB |
Output is correct |
5 |
Correct |
5 ms |
492 KB |
Output is correct |
6 |
Correct |
5 ms |
492 KB |
Output is correct |
7 |
Correct |
5 ms |
492 KB |
Output is correct |
8 |
Correct |
6 ms |
492 KB |
Output is correct |
9 |
Correct |
5 ms |
492 KB |
Output is correct |
10 |
Correct |
5 ms |
492 KB |
Output is correct |
11 |
Correct |
5 ms |
492 KB |
Output is correct |
12 |
Correct |
5 ms |
492 KB |
Output is correct |
13 |
Correct |
3 ms |
492 KB |
Output is correct |
14 |
Correct |
4 ms |
492 KB |
Output is correct |
15 |
Correct |
5 ms |
492 KB |
Output is correct |
16 |
Correct |
4 ms |
492 KB |
Output is correct |
17 |
Correct |
3 ms |
492 KB |
Output is correct |
18 |
Correct |
4 ms |
492 KB |
Output is correct |
19 |
Correct |
1 ms |
364 KB |
Output is correct |
20 |
Correct |
1 ms |
364 KB |
Output is correct |
21 |
Correct |
1 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
767 ms |
15724 KB |
Output is correct |
2 |
Correct |
769 ms |
16364 KB |
Output is correct |
3 |
Correct |
774 ms |
16876 KB |
Output is correct |
4 |
Correct |
758 ms |
15980 KB |
Output is correct |
5 |
Correct |
766 ms |
16748 KB |
Output is correct |
6 |
Correct |
308 ms |
9068 KB |
Output is correct |
7 |
Correct |
317 ms |
9096 KB |
Output is correct |
8 |
Correct |
615 ms |
17132 KB |
Output is correct |
9 |
Correct |
614 ms |
17520 KB |
Output is correct |
10 |
Correct |
602 ms |
16236 KB |
Output is correct |
11 |
Correct |
419 ms |
9068 KB |
Output is correct |
12 |
Correct |
310 ms |
9580 KB |
Output is correct |
13 |
Correct |
321 ms |
9836 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
492 KB |
Output is correct |
2 |
Correct |
5 ms |
492 KB |
Output is correct |
3 |
Correct |
5 ms |
492 KB |
Output is correct |
4 |
Correct |
5 ms |
492 KB |
Output is correct |
5 |
Correct |
5 ms |
492 KB |
Output is correct |
6 |
Correct |
5 ms |
492 KB |
Output is correct |
7 |
Correct |
5 ms |
492 KB |
Output is correct |
8 |
Correct |
6 ms |
492 KB |
Output is correct |
9 |
Correct |
5 ms |
492 KB |
Output is correct |
10 |
Correct |
5 ms |
492 KB |
Output is correct |
11 |
Correct |
5 ms |
492 KB |
Output is correct |
12 |
Correct |
5 ms |
492 KB |
Output is correct |
13 |
Correct |
3 ms |
492 KB |
Output is correct |
14 |
Correct |
4 ms |
492 KB |
Output is correct |
15 |
Correct |
5 ms |
492 KB |
Output is correct |
16 |
Correct |
4 ms |
492 KB |
Output is correct |
17 |
Correct |
3 ms |
492 KB |
Output is correct |
18 |
Correct |
4 ms |
492 KB |
Output is correct |
19 |
Correct |
1 ms |
364 KB |
Output is correct |
20 |
Correct |
1 ms |
364 KB |
Output is correct |
21 |
Correct |
1 ms |
364 KB |
Output is correct |
22 |
Correct |
767 ms |
15724 KB |
Output is correct |
23 |
Correct |
769 ms |
16364 KB |
Output is correct |
24 |
Correct |
774 ms |
16876 KB |
Output is correct |
25 |
Correct |
758 ms |
15980 KB |
Output is correct |
26 |
Correct |
766 ms |
16748 KB |
Output is correct |
27 |
Correct |
308 ms |
9068 KB |
Output is correct |
28 |
Correct |
317 ms |
9096 KB |
Output is correct |
29 |
Correct |
615 ms |
17132 KB |
Output is correct |
30 |
Correct |
614 ms |
17520 KB |
Output is correct |
31 |
Correct |
602 ms |
16236 KB |
Output is correct |
32 |
Correct |
419 ms |
9068 KB |
Output is correct |
33 |
Correct |
310 ms |
9580 KB |
Output is correct |
34 |
Correct |
321 ms |
9836 KB |
Output is correct |
35 |
Correct |
775 ms |
21260 KB |
Output is correct |
36 |
Correct |
773 ms |
22636 KB |
Output is correct |
37 |
Correct |
786 ms |
23404 KB |
Output is correct |
38 |
Correct |
777 ms |
23276 KB |
Output is correct |
39 |
Correct |
777 ms |
23404 KB |
Output is correct |
40 |
Correct |
781 ms |
23328 KB |
Output is correct |
41 |
Correct |
779 ms |
23148 KB |
Output is correct |
42 |
Correct |
781 ms |
23404 KB |
Output is correct |
43 |
Correct |
772 ms |
22508 KB |
Output is correct |
44 |
Correct |
793 ms |
22892 KB |
Output is correct |
45 |
Correct |
778 ms |
23020 KB |
Output is correct |
46 |
Correct |
794 ms |
23948 KB |
Output is correct |
47 |
Correct |
308 ms |
14316 KB |
Output is correct |
48 |
Correct |
411 ms |
14316 KB |
Output is correct |
49 |
Correct |
769 ms |
21484 KB |
Output is correct |
50 |
Correct |
430 ms |
14316 KB |
Output is correct |
51 |
Correct |
312 ms |
14572 KB |
Output is correct |
52 |
Correct |
470 ms |
14700 KB |
Output is correct |