Submission #1267486

#TimeUsernameProblemLanguageResultExecution timeMemory
1267486WH8Foehn Phenomena (JOI17_foehn_phenomena)C++20
100 / 100
348 ms7296 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long 
#define pll pair<int, int>
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define endl '\n'

signed main(){
	int n,q,s,t;
	cin>>n>>q>>s>>t;
	vector<int> v(n+5,0), d(n+5, 0);
	int ans=0;
	for(int i=0;i<=n;i++){
		cin>>v[i];
		if(i > 0){
			d[i]=v[i]-v[i-1];
			if(d[i] >= 0){ans-=s*d[i];}
			else {ans+=-t*d[i];}
		}
	}
	//~ cout<<"ans is "<<ans<<endl;
	while(q--){
		int l,r,x,i;cin>>l>>r>>x;
		i=l;
		if(d[i] >= 0){ans+=s*d[i];}
		else {ans-=-t*d[i];}
		
		d[i]+=x;
		if(d[i] >= 0){ans-=s*d[i];}
		else {ans+=-t*d[i];}
		
		//~ printf("after balancing l, ans is %lld\n", ans);
		
		
		if(r < n){
			i=r+1;
			if(d[i] >= 0){ans+=s*d[i];}
			else {ans-=-t*d[i];}
			
			d[i]-=x;
			if(d[i] >= 0){ans-=s*d[i];}
			else {ans+=-t*d[i];}
		}
		//~ int sm=0;
		//~ cout<<endl<<"sm is \n";
		//~ for(int i=0;i<=n;i++){
			//~ sm+=d[i];
			//~ cout<<sm<<" ";
		//~ }
		//~ cout<<endl<<"d is \n";
		//~ for(int i=0;i<=n;i++){
			//~ cout<<d[i]<<" ";
		//~ }
		
		//~ cout<<endl;
		cout<<ans<<"\n";
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...