#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define f first
#define s second
// ll n,a[1001000],q,b[1001000],z[8001000],ans[1001000];
// pair<ll,ll>st[4001000];
// ll binpov( ll a,ll n,ll m){
// if(n==0){x
// return 1ll;
// }
// if(n&1)return((binpov(a,n-1,m)%m)*a%m);
// else{
// ll b=binpov(a,n/2,m)%m;
// return ((b*1ll*b)%m);
// }
// }
// pair<ll,ll> merge(pair<ll,ll>a,pair<ll,ll>b){
// if(a.f>b.f){
// return a;
// }
// return b;
// }
// void build(ll v,ll l,ll r){
// if(l==r){
// st[v].f=b[l];
// st[v].s=l;
// //cout<<b[l]<<' '<<l<<'\n';
// return;
// }
// ll mid=(r+l)/2;
// build(v*2,l,mid);
// build(v*2+1,mid+1,r);
// st[v]=merge(st[v*2],st[v*2+1]);
// }
// void push(ll v,ll l,ll r){
// st[v*2].f-=z[v];
// st[v*2+1].f-=z[v];
// z[v*2]+=z[v];
// z[v*2+1]+=z[v];
// z[v]=0;
// }
// void upd_range(ll v,ll l,ll r,ll x,ll y) {
// if(l>y||x>r)return;
// if(x<=l&&r<=y){
// st[v].f--;
// z[v]++;
// return;
// }
// push(v,l,r);
// ll mid=(r+l)/2;
// upd_range(v*2,l,mid,x,y);
// upd_range(v*2+1,mid+1,r,x,y);
// st[v]=merge(st[v*2],st[v*2+1]);
// }
// void upd_pos(ll v,ll l,ll r,ll pos){
// if(l==r){
// st[v].f=-1e10;
// return;
// }
// push(v,l,r);
// ll mid=(r+l)/2;
// if(pos<=mid)upd_pos(v*2,l,mid,pos);
// else upd_pos(v*2+1,mid+1,r,pos);
// st[v]=merge(st[v*2],st[v*2+1]);
// }
// pair<ll,ll> get(ll v,ll l,ll r,ll x,ll y){
// if(l>y||x>r){
// return {-1e18,-1e10};
// }
// if(x<=l&&r<=y){
// return {st[v]};
// }
// push(v,l,r);
// ll mid=(l+r)/2;
// return merge(get(v*2,l,mid,x,y),get(v*2+1,mid+1,r,x,y));
// }
// vector<ll>g[22];
// int gcd(int a, int b){
// if(b==0)return a;
// return gcd(b,a%b);
// }
// int lcm(int a,int b){
// return (a/gcd(a,b))*b;
// }
// ll q,fact[5001],inv[5001];
const ll mod=1e9+7,N=2e5+1000;
// ll binpow(ll a,ll n){
// if(n==0){
// return 1ll;
// }
// if(n%2)return binpow(a,n-1)*1LL*a%mod;
// else{
// ll b=binpow(a,n/2)%mod;
// return b*1LL*b%mod;
// }
// }
// bool saw(vector<int>v){
// int ok=1,ok1=1;
// for(int i=1;i<=(int)v.size();i+=2){
// ok&=(v[i-1]<v[i]&&v[i]>v[i+1]);
// }
// for(int i=1;i<=(int)v.size();i+=2){
// ok1&=(v[i-1]>v[i]&&v[i]<v[i+1]);
// }
// return (ok||ok1);
// }
// bool cyc(vector<int>v){
// int cnt=0,cur=1;
// while(cur!=v[cur-1]&&cnt<=(int)v.size()){
// cur=v[cur-1];
// if(cur==1)break;
// cnt++;
// }
// return (cnt==(int)v.size()-1);
// }
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
ll s,t,pr,l=0,r=0,n,q;
cin>>n>>q>>s>>t;
ll a[n+1];
for(int i=0;i<n+1;i++){
cin>>a[i];
a[i]-=pr;
if(a[i]>0)l+=a[i];
else r+=abs(a[i]);
pr+=a[i];
}
while(q--){
ll x,y,d;
cin>>x>>y>>d;
if(x>0||x<=n){
if(a[x]>0)l-=a[x];
else r-=abs(a[x]);
a[x]+=d;
if(a[x]>0)l+=a[x];
else r+=abs(a[x]);
}
if(y+1<=n){
if(a[y+1]>0)l-=a[y+1];
else r-=abs(a[y+1]);
a[y+1]-=d;
if(a[y+1]>0)l+=a[y+1];
else r+=abs(a[y+1]);
}
cout<<ll(r*t-s*l)<<"\n";
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |