Submission #209248

#TimeUsernameProblemLanguageResultExecution timeMemory
209248jzhFoehn Phenomena (JOI17_foehn_phenomena)C++14
10 / 100
171 ms7288 KiB
#include <bits/stdc++.h>
#pragma O3
using namespace std;
typedef long long ll;
ll ft[2000005]={0};
ll ls(ll x) { 
    return (x & (-x)); 
}
ll query(ll p) {
    ll sum = 0;
    for(; p; p -= ls(p)) sum += ft[p];
    return sum;
}

void update(ll x, ll y, ll v) {
	for(; x < 2000005; x += ls(x)) ft[x] += v;
    y++;
    for(; y < 2000005; y += ls(x)) ft[y] -= v;}
int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    ll n,q,i,s,t,i1,x,y,w,sum=0,xi,yi,xf,yf,xii,yii;
    cin>>n>>q>>s>>t;
    ll arr[n+1];
    for (i=0;i<=n;i++){
        cin>>arr[i];
        if (i>0)update(i,i,arr[i]);
    }
    for (i=1;i<=n;i++){
        if (arr[i]>arr[i-1])sum-=s*(arr[i]-arr[i-1]);
        else sum+=t*(arr[i-1]-arr[i]);
    }
    //cout<<sum<<'\n';
    while (q--){
        cin>>x>>y>>w;
        xi=query(x);
        yi=query(x-1);
        xii=query(y+1);
        yii=query(y);
        //cout<<xi<<' '<<yi<<' '<<xii<<' '<<yii<<'\n';
        update(x,y,w);
        xf=query(x);
        yf=query(x-1);
        //cout<<xf<<' '<<yf<<' ';
        if (xi>yi){
            sum+=s*(xi-yi);
        }
        else {
            sum-=t*(yi-xi);
        }
        if (xf<=yf){
            sum+=t*(yf-xf);
        }
        else {
            sum-=s*(xf-yf);
        }
        xi=xii;
        yi=yii;
        xf=query(y+1);
        yf=query(y);
        //cout<<xf<<' '<<yf<<'\n';
        if (y==n){}
        else {
            if (xi>yi){
                sum+=s*(xi-yi);
            }
            else {
                sum-=t*(yi-xi);
            }
            if (xf<=yf){
                sum+=t*(yf-xf);
            }
            else {
                sum-=s*(xf-yf);
            }
        }
        cout<<sum<<'\n';
    }

}

Compilation message (stderr)

foehn_phenomena.cpp:2:0: warning: ignoring #pragma O3  [-Wunknown-pragmas]
 #pragma O3
 
foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:22:18: warning: unused variable 'i1' [-Wunused-variable]
     ll n,q,i,s,t,i1,x,y,w,sum=0,xi,yi,xf,yf,xii,yii;
                  ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...