Submission #1276511

#TimeUsernameProblemLanguageResultExecution timeMemory
1276511Mauricio_CruzFoehn Phenomena (JOI17_foehn_phenomena)C++20
0 / 100
67 ms4824 KiB
#include <bits/stdc++.h>
using namespace std;

#define srtl(x)sort((x).begin(),(x).end())
#define srtg(x)sort((x).begin(),(x).end(),greater<>())
#define rev(x) reverse((x).begin(),(x).end())
#define lb(x,y) lower_bound(x.begin(),x.end(),y)-x.begin()
#define ub(x,y) upper_bound(x.begin(),x.end(),y)-x.begin()

#define ios ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);

#define wa cout<<"wa";
#define tl while(1){}

#define f first
#define s second
#define pb push_back
#define ins insert
#define next next_permutation
#define _b __builtin_popcount

#define ve vector
#define pii pair<int,int>
#define piii pair<int,pii>
#define vi vector<int>
#define vii vector<pii>
#define viii vector<piii>
#define vvi vector<vi>
#define vs vector<string>
#define all(x) x.begin(), x.end()

#define ic(x)int x;cin>>x
#define pV(x)for(auto i:x)cout<<i<<" ";

#define fr(n)for(int i=0;i<n;i++)
#define no(x){cout<<x<<"\n";return;}
#define cn continue;

#define cint const int
#define int long long

int mod=1000000007;
cint mod1=100000007;
cint mod2=998244353;

int ax[8]={0,1,0,-1,-1,1,1,-1};
int ay[8]={1,0,-1,0,1,-1,1,-1};

//int n,m;

//bool on(int x,int y){return (x>=0&&x<n&&y>=0&&y<m);}
//int euc(int a,int b,int c,int d){return abs(a-c)+abs(b-d);}

/*
const int N=200005;
int tree[N];
void upd(int nod,int val){
	nod+=n;
	tree[nod]+=val;
	nod/=2;
	while(nod!=0){
		tree[nod]=tree[2*nod]+tree[2*nod];
		nod/=2;
	}
}
int qr(int l,int r){
	l+=n;
	r+=n+1;
	int ret=0;
	while(l<r){
		if(l&1){ret+=tree[l];l++;}
		if(r&1){r--;ret+=tree[r];}
		l/=2;
		r/=2;
	}
	return ret;
}
*/
int bp(int x,int y){
	if(y==0)return 1;
	int r=bp(x,y/2);
	return (y&1)?r*r%mod*x%mod:r*r%mod;
}

cint oo=INT_MAX;
const long long OO=LONG_LONG_MAX;

int q,x,y,n;
vi a;
int dif(int pos){
	if(pos+1>n)return 0;
	if(a[pos]<a[pos+1])return -(x*(a[pos+1]-a[pos]));
	return y*(a[pos]-a[pos+1]);
}

int32_t main(){
	
	ios;
	cin>>n>>q>>x>>y;
	a.resize(n+1);
	for(int i=0;i<=n;i++)cin>>a[i];
	
	int res=0;
	for(int i=0;i<=n-1;i++){
		res+=dif(i);
	}
	while(q--){
		int l,r,k;
		cin>>l>>r>>k;
		res-=dif(l-1);
		res-=dif(r);
		a[l]+=k;
		a[r]+=k;
		res+=dif(l-1);
		res+=dif(r);
		cout<<res<<"\n";
	}
	
	
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...