#include<bits/stdc++.h>
using namespace std ;
#define ll long long
struct lazy_tree
{
vector<ll> lazy ;
lazy_tree(ll a[] , int low , int n)
{
lazy = vector<ll> (4*n + 4 , 0) ;
build(a,1,low,n) ;
}
void build(ll a[] , int node , int low , int high)
{
if(low==high) lazy[node] = a[low] ;
else
{
int mid = (low+high)>>1 , left = node<<1 , right = left|1 ;
build(a,left,low,mid) , build(a,right,mid+1,high) ;
}
}
void upd(int node , ll val)
{
lazy[node] += val ;
}
void shift(int node)
{
int left = node<<1 , right = left|1 ;
upd(left,lazy[node]) , upd(right,lazy[node]) ;
lazy[node] = 0 ;
}
void update(int node , int low , int high , int l , int r , ll val)
{
if(high<l || low>r) return ;
if(l<=low && high<=r)
{
upd(node,val) ;
return ;
}
shift(node) ;
int mid = (low+high)>>1 , left = node<<1 , right = left|1 ;
update(left,low,mid,l,r,val) , update(right,mid+1,high,l,r,val) ;
}
ll query(int node , int low , int high , int ind)
{
if(high<ind || low>ind) return 0 ;
if(low==high && ind==low) return lazy[node] ;
shift(node) ;
int mid = (low+high)>>1 , left = node<<1 , right = left|1 ;
return query(left,low,mid,ind) + query(right,mid+1,high,ind) ;
}
};
int main()
{
int n , q ;
long long s , t , ans = 0 ;
scanf("%d%d%lld%lld",&n,&q,&s,&t) ;
long long a[n+1] ;
for(int i = 0 ; i <= n ; ++i)
{
scanf("%lld",&a[i]) ;
if(!i) continue ;
if(a[i]>a[i-1]) ans -= (a[i]-a[i-1])*s ;
else ans += (a[i-1]-a[i])*t ;
}
lazy_tree T(a,0,n) ;
while(q--)
{
int l , r ;
scanf("%d%d",&l,&r) ;
long long x ;
scanf("%lld",&x) ;
a[l] = T.query(1,0,n,l) ;
if(l)
{
a[l-1] = T.query(1,0,n,l-1) ;
if(a[l]>a[l-1]) ans += (a[l]-a[l-1])*s ;
else ans -= (a[l-1]-a[l])*t ;
}
a[r] = T.query(1,0,n,r) ;
if(r<n)
{
a[r+1] = T.query(1,0,n,r+1) ;
if(a[r+1]>a[r]) ans += (a[r+1]-a[r])*s ;
else ans -= (a[r]-a[r+1])*t ;
}
T.update(1,0,n,l,r,x) ;
a[l] = T.query(1,0,n,l) , a[r] = T.query(1,0,n,r) ;
if(l)
{
if(a[l]>a[l-1]) ans -= (a[l]-a[l-1])*s ;
else ans += (a[l-1]-a[l])*t ;
}
if(r<n)
{
if(a[r+1]>a[r]) ans -= (a[r+1]-a[r])*s ;
else ans += (a[r]-a[r+1])*t ;
}
printf("%lld\n",ans) ;
}
return 0 ;
}
Compilation message
foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:64:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
64 | scanf("%d%d%lld%lld",&n,&q,&s,&t) ;
| ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
foehn_phenomena.cpp:68:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
68 | scanf("%lld",&a[i]) ;
| ~~~~~^~~~~~~~~~~~~~
foehn_phenomena.cpp:77:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
77 | scanf("%d%d",&l,&r) ;
| ~~~~~^~~~~~~~~~~~~~
foehn_phenomena.cpp:79:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
79 | scanf("%lld",&x) ;
| ~~~~~^~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
364 KB |
Output is correct |
2 |
Correct |
4 ms |
364 KB |
Output is correct |
3 |
Correct |
4 ms |
364 KB |
Output is correct |
4 |
Correct |
5 ms |
364 KB |
Output is correct |
5 |
Correct |
4 ms |
364 KB |
Output is correct |
6 |
Correct |
4 ms |
364 KB |
Output is correct |
7 |
Correct |
4 ms |
364 KB |
Output is correct |
8 |
Correct |
4 ms |
364 KB |
Output is correct |
9 |
Correct |
4 ms |
364 KB |
Output is correct |
10 |
Correct |
4 ms |
364 KB |
Output is correct |
11 |
Correct |
4 ms |
364 KB |
Output is correct |
12 |
Correct |
4 ms |
364 KB |
Output is correct |
13 |
Correct |
3 ms |
364 KB |
Output is correct |
14 |
Correct |
3 ms |
364 KB |
Output is correct |
15 |
Correct |
4 ms |
364 KB |
Output is correct |
16 |
Correct |
3 ms |
364 KB |
Output is correct |
17 |
Correct |
3 ms |
364 KB |
Output is correct |
18 |
Correct |
3 ms |
364 KB |
Output is correct |
19 |
Correct |
0 ms |
364 KB |
Output is correct |
20 |
Correct |
0 ms |
364 KB |
Output is correct |
21 |
Correct |
0 ms |
364 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
577 ms |
9760 KB |
Output is correct |
2 |
Correct |
574 ms |
10344 KB |
Output is correct |
3 |
Correct |
576 ms |
10988 KB |
Output is correct |
4 |
Correct |
579 ms |
9964 KB |
Output is correct |
5 |
Correct |
561 ms |
10988 KB |
Output is correct |
6 |
Correct |
360 ms |
11244 KB |
Output is correct |
7 |
Correct |
370 ms |
11180 KB |
Output is correct |
8 |
Correct |
518 ms |
11116 KB |
Output is correct |
9 |
Correct |
525 ms |
11372 KB |
Output is correct |
10 |
Correct |
501 ms |
10208 KB |
Output is correct |
11 |
Correct |
379 ms |
11244 KB |
Output is correct |
12 |
Correct |
365 ms |
11568 KB |
Output is correct |
13 |
Correct |
371 ms |
13804 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
4 ms |
364 KB |
Output is correct |
2 |
Correct |
4 ms |
364 KB |
Output is correct |
3 |
Correct |
4 ms |
364 KB |
Output is correct |
4 |
Correct |
5 ms |
364 KB |
Output is correct |
5 |
Correct |
4 ms |
364 KB |
Output is correct |
6 |
Correct |
4 ms |
364 KB |
Output is correct |
7 |
Correct |
4 ms |
364 KB |
Output is correct |
8 |
Correct |
4 ms |
364 KB |
Output is correct |
9 |
Correct |
4 ms |
364 KB |
Output is correct |
10 |
Correct |
4 ms |
364 KB |
Output is correct |
11 |
Correct |
4 ms |
364 KB |
Output is correct |
12 |
Correct |
4 ms |
364 KB |
Output is correct |
13 |
Correct |
3 ms |
364 KB |
Output is correct |
14 |
Correct |
3 ms |
364 KB |
Output is correct |
15 |
Correct |
4 ms |
364 KB |
Output is correct |
16 |
Correct |
3 ms |
364 KB |
Output is correct |
17 |
Correct |
3 ms |
364 KB |
Output is correct |
18 |
Correct |
3 ms |
364 KB |
Output is correct |
19 |
Correct |
0 ms |
364 KB |
Output is correct |
20 |
Correct |
0 ms |
364 KB |
Output is correct |
21 |
Correct |
0 ms |
364 KB |
Output is correct |
22 |
Correct |
577 ms |
9760 KB |
Output is correct |
23 |
Correct |
574 ms |
10344 KB |
Output is correct |
24 |
Correct |
576 ms |
10988 KB |
Output is correct |
25 |
Correct |
579 ms |
9964 KB |
Output is correct |
26 |
Correct |
561 ms |
10988 KB |
Output is correct |
27 |
Correct |
360 ms |
11244 KB |
Output is correct |
28 |
Correct |
370 ms |
11180 KB |
Output is correct |
29 |
Correct |
518 ms |
11116 KB |
Output is correct |
30 |
Correct |
525 ms |
11372 KB |
Output is correct |
31 |
Correct |
501 ms |
10208 KB |
Output is correct |
32 |
Correct |
379 ms |
11244 KB |
Output is correct |
33 |
Correct |
365 ms |
11568 KB |
Output is correct |
34 |
Correct |
371 ms |
13804 KB |
Output is correct |
35 |
Correct |
570 ms |
11644 KB |
Output is correct |
36 |
Correct |
571 ms |
13292 KB |
Output is correct |
37 |
Correct |
575 ms |
14060 KB |
Output is correct |
38 |
Correct |
601 ms |
13796 KB |
Output is correct |
39 |
Correct |
606 ms |
13676 KB |
Output is correct |
40 |
Correct |
585 ms |
13676 KB |
Output is correct |
41 |
Correct |
579 ms |
13668 KB |
Output is correct |
42 |
Correct |
577 ms |
13804 KB |
Output is correct |
43 |
Correct |
569 ms |
12908 KB |
Output is correct |
44 |
Correct |
618 ms |
13292 KB |
Output is correct |
45 |
Correct |
560 ms |
13036 KB |
Output is correct |
46 |
Correct |
578 ms |
13856 KB |
Output is correct |
47 |
Correct |
356 ms |
13804 KB |
Output is correct |
48 |
Correct |
367 ms |
13844 KB |
Output is correct |
49 |
Correct |
569 ms |
12908 KB |
Output is correct |
50 |
Correct |
389 ms |
13676 KB |
Output is correct |
51 |
Correct |
366 ms |
13932 KB |
Output is correct |
52 |
Correct |
429 ms |
13684 KB |
Output is correct |