#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN = 2*1e5 + 10;
ll S,T;
ll magic(ll A,ll B){
if(A < B){
return -S*abs(B - A);
}
else{
return abs(B - A)*T;
}
}
struct node{
ll temperature;
ll ini,fim,lazy;
node() : temperature(0),ini(0),fim(0),lazy(0){}
node operator*(const node& other)const{
node novo;
novo.ini = ini;
novo.fim = other.fim;
novo.lazy = 0;
novo.temperature = temperature + magic(fim,other.ini) + other.temperature;
return novo;
}
};
ll N,Q,vetor[MAXN];
node seg[4*MAXN];
void propagate(int pos,int left,int right){
seg[pos].ini += seg[pos].lazy;
seg[pos].fim += seg[pos].lazy;
if(left != right){
seg[2*pos].lazy += seg[pos].lazy;
seg[2*pos+1].lazy += seg[pos].lazy;
}
seg[pos].lazy = 0;
}
void build(int pos,int left,int right){
if(left == right){
seg[pos].ini = seg[pos].fim = vetor[left];
seg[pos].temperature = seg[pos].lazy = 0;
return;
}
int mid = (left+right)/2;
build(2*pos,left,mid);
build(2*pos+1,mid+1,right);
seg[pos] = seg[2*pos] * seg[2*pos+1];
}
void update(int pos,int left,int right,int i,int j,ll delta){
propagate(pos,left,right);
if(left>right||left>j||right<i) return;
if(left >= i && right <= j){
seg[pos].lazy += delta;
propagate(pos,left,right);
return;
}
int mid = (left+right)/2;
update(2*pos,left,mid,i,j,delta);
update(2*pos+1,mid+1,right,i,j,delta);
seg[pos] = seg[2*pos] * seg[2*pos+1];
}
int main(){
scanf("%lld %lld %lld %lld",&N,&Q,&S,&T);
for(int i = 0;i<=N;i++){
scanf("%lld",&vetor[i]);
}
build(1,0,N);
for(ll q = 1;q<=Q;q++){
ll a,b,delta;
scanf("%lld %lld %lld",&a,&b,&delta);
update(1,0,N,a,b,delta);
printf("%lld\n",seg[1].temperature);
}
return 0;
}
Compilation message
foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:63:42: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld %lld %lld %lld",&N,&Q,&S,&T);
^
foehn_phenomena.cpp:65:26: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld",&vetor[i]);
^
foehn_phenomena.cpp:70:39: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%lld %lld %lld",&a,&b,&delta);
^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
25468 KB |
Output is correct |
2 |
Correct |
21 ms |
25632 KB |
Output is correct |
3 |
Correct |
23 ms |
25672 KB |
Output is correct |
4 |
Correct |
22 ms |
25756 KB |
Output is correct |
5 |
Correct |
22 ms |
25948 KB |
Output is correct |
6 |
Correct |
23 ms |
25972 KB |
Output is correct |
7 |
Correct |
21 ms |
26020 KB |
Output is correct |
8 |
Correct |
22 ms |
26068 KB |
Output is correct |
9 |
Correct |
21 ms |
26132 KB |
Output is correct |
10 |
Correct |
22 ms |
26180 KB |
Output is correct |
11 |
Correct |
22 ms |
26360 KB |
Output is correct |
12 |
Correct |
26 ms |
26384 KB |
Output is correct |
13 |
Correct |
21 ms |
26456 KB |
Output is correct |
14 |
Correct |
21 ms |
26500 KB |
Output is correct |
15 |
Correct |
21 ms |
26616 KB |
Output is correct |
16 |
Correct |
21 ms |
26616 KB |
Output is correct |
17 |
Correct |
21 ms |
26640 KB |
Output is correct |
18 |
Correct |
21 ms |
26684 KB |
Output is correct |
19 |
Correct |
20 ms |
26684 KB |
Output is correct |
20 |
Correct |
19 ms |
26684 KB |
Output is correct |
21 |
Correct |
20 ms |
26684 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
500 ms |
35060 KB |
Output is correct |
2 |
Correct |
494 ms |
41064 KB |
Output is correct |
3 |
Correct |
499 ms |
46980 KB |
Output is correct |
4 |
Correct |
472 ms |
51988 KB |
Output is correct |
5 |
Correct |
459 ms |
58656 KB |
Output is correct |
6 |
Correct |
268 ms |
63716 KB |
Output is correct |
7 |
Correct |
256 ms |
68364 KB |
Output is correct |
8 |
Correct |
432 ms |
73912 KB |
Output is correct |
9 |
Correct |
441 ms |
79776 KB |
Output is correct |
10 |
Correct |
432 ms |
83960 KB |
Output is correct |
11 |
Correct |
299 ms |
89472 KB |
Output is correct |
12 |
Correct |
261 ms |
94732 KB |
Output is correct |
13 |
Correct |
259 ms |
99868 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
22 ms |
25468 KB |
Output is correct |
2 |
Correct |
21 ms |
25632 KB |
Output is correct |
3 |
Correct |
23 ms |
25672 KB |
Output is correct |
4 |
Correct |
22 ms |
25756 KB |
Output is correct |
5 |
Correct |
22 ms |
25948 KB |
Output is correct |
6 |
Correct |
23 ms |
25972 KB |
Output is correct |
7 |
Correct |
21 ms |
26020 KB |
Output is correct |
8 |
Correct |
22 ms |
26068 KB |
Output is correct |
9 |
Correct |
21 ms |
26132 KB |
Output is correct |
10 |
Correct |
22 ms |
26180 KB |
Output is correct |
11 |
Correct |
22 ms |
26360 KB |
Output is correct |
12 |
Correct |
26 ms |
26384 KB |
Output is correct |
13 |
Correct |
21 ms |
26456 KB |
Output is correct |
14 |
Correct |
21 ms |
26500 KB |
Output is correct |
15 |
Correct |
21 ms |
26616 KB |
Output is correct |
16 |
Correct |
21 ms |
26616 KB |
Output is correct |
17 |
Correct |
21 ms |
26640 KB |
Output is correct |
18 |
Correct |
21 ms |
26684 KB |
Output is correct |
19 |
Correct |
20 ms |
26684 KB |
Output is correct |
20 |
Correct |
19 ms |
26684 KB |
Output is correct |
21 |
Correct |
20 ms |
26684 KB |
Output is correct |
22 |
Correct |
500 ms |
35060 KB |
Output is correct |
23 |
Correct |
494 ms |
41064 KB |
Output is correct |
24 |
Correct |
499 ms |
46980 KB |
Output is correct |
25 |
Correct |
472 ms |
51988 KB |
Output is correct |
26 |
Correct |
459 ms |
58656 KB |
Output is correct |
27 |
Correct |
268 ms |
63716 KB |
Output is correct |
28 |
Correct |
256 ms |
68364 KB |
Output is correct |
29 |
Correct |
432 ms |
73912 KB |
Output is correct |
30 |
Correct |
441 ms |
79776 KB |
Output is correct |
31 |
Correct |
432 ms |
83960 KB |
Output is correct |
32 |
Correct |
299 ms |
89472 KB |
Output is correct |
33 |
Correct |
261 ms |
94732 KB |
Output is correct |
34 |
Correct |
259 ms |
99868 KB |
Output is correct |
35 |
Correct |
515 ms |
103108 KB |
Output is correct |
36 |
Correct |
513 ms |
109960 KB |
Output is correct |
37 |
Correct |
531 ms |
116204 KB |
Output is correct |
38 |
Correct |
510 ms |
121296 KB |
Output is correct |
39 |
Correct |
505 ms |
126740 KB |
Output is correct |
40 |
Correct |
507 ms |
132156 KB |
Output is correct |
41 |
Correct |
534 ms |
137660 KB |
Output is correct |
42 |
Correct |
512 ms |
142952 KB |
Output is correct |
43 |
Correct |
521 ms |
147552 KB |
Output is correct |
44 |
Correct |
537 ms |
153416 KB |
Output is correct |
45 |
Correct |
502 ms |
158992 KB |
Output is correct |
46 |
Correct |
482 ms |
165676 KB |
Output is correct |
47 |
Correct |
267 ms |
170192 KB |
Output is correct |
48 |
Correct |
237 ms |
174760 KB |
Output is correct |
49 |
Correct |
512 ms |
178300 KB |
Output is correct |
50 |
Correct |
267 ms |
183556 KB |
Output is correct |
51 |
Correct |
266 ms |
188440 KB |
Output is correct |
52 |
Correct |
347 ms |
193084 KB |
Output is correct |