Submission #1159683

#TimeUsernameProblemLanguageResultExecution timeMemory
1159683aldkswFoehn 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=1e6+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<<r*t-s*l<<"\n"; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...