Submission #1159685

#TimeUsernameProblemLanguageResultExecution timeMemory
1159685aldkswFoehn Phenomena (JOI17_foehn_phenomena)C++20
0 / 100
58 ms5188 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...