Submission #1144935

#TimeUsernameProblemLanguageResultExecution timeMemory
1144935khangrlFoehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
442 ms10020 KiB
#include<bits/stdc++.h>
#define ff first
#define ss second
#define int long long
#define pb push_back
using namespace std;
int n, q, s, t, last, st[800000];
vector <int> v;
int consst(int pos, int l, int r){
	if(l==r){
		if(v[l]<0){
			st[pos]=v[l]*(-t);
		}
		else{
			st[pos]=v[l]*(-s);
		}
		return st[pos];
	}
	int mid=(l+r)/2;
	st[pos]=consst(pos*2+1, l, mid)+consst(pos*2+2, mid+1, r);
	return st[pos];
}
int upd(int pos, int l, int r, int q){
	if(l==r and l==q){
		if(v[l]<0){
			st[pos]=v[l]*(-t);
		}
		else{
			st[pos]=v[l]*(-s);
		}
		return st[pos];
	}
	if(q<l or q>r){
		return st[pos];
	}
	int mid=(l+r)/2;
	st[pos]=upd(pos*2+1, l, mid, q)+upd(pos*2+2, mid+1, r, q);
	return st[pos];
}
signed main(){
	cin>>n>>q>>s>>t>>last;
	for(int i=1; i<=n; i++){
		int a;
		cin>>a;
		v.pb(a-last);
		last=a;
	}
	consst(0, 0, n-1);
	while(q--){
		int l, r, k;
		cin>>l>>r>>k;
		v[l-1]+=k;
		v[r]-=k;
		upd(0, 0, n-1, l-1);
	    upd(0, 0, n-1, r);
		cout<<st[0]<<endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...