#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |