Submission #227934

#TimeUsernameProblemLanguageResultExecution timeMemory
227934dvdg6566Foehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
869 ms11896 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef vector<ll> vi;
typedef pair<ll,ll> pi;
typedef vector<pi> vpi;
typedef long double ld;
#define pb emplace_back
#define mp make_pair
#define lb lower_bound
#define ub upper_bound
#define ALL(x) x.begin(), x.end()
#define SZ(x) (ll)x.size()
#define f first
#define s second
const ll MAXN = 301000;
const ll INF = 1e18;
const ll MOD = 1e9+7;

ll N,M,a,b,A,B;
ll fw[MAXN];
ll ans;

void up(ll x, ll y, ll v){
	--x;
	for(;y;y-=y&(-y))fw[y]+=v;
	for(;x;x-=x&(-x))fw[x]-=v;
}

ll query(ll x){
	if(x==0)return 0;
	ll res=0;
	for(;x<=N;x+=x&(-x))res+=fw[x];
	return res;
}

ll ask(ll a, ll b){
	// cerr<<a<<' '<<b<<'\n';
	if(a<b)return A*(a-b);
	else return B*(a-b);
}

int main(){
	cin>>N>>M>>A>>B;
	cin>>a;
	// cerr<<ask(4,8)<<'\n';
	for (ll i=1;i<=N;++i){
		cin>>a;
		ans+=ask(b,a);
		up(i,i,a);
		b=a;
	}
	// cout<<ans<<'\n';
	// return 0;
	for (ll i=0;i<M;++i){
		ll a,b,c,d,h;
		cin>>a>>b>>h;
		ans-=ask(query(a-1),query(a));
		// cerr<<(b==N)<<' '<<query(b)<<' '<<query(b+1)<<'\n';
		if(b!=N)ans-=ask(query(b),query(b+1));
		// cerr<<"I "<<ans<<'\n';
		up(a,b,h);
		ans+=ask(query(a-1),query(a));
		if(b!=N)ans+=ask(query(b),query(b+1));
		cout<<ans<<'\n';
		// for(ll i=1;i<=N;++i)cout<<query(i)<<' ';cout<<'\n';
	}
}

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:56:10: warning: unused variable 'c' [-Wunused-variable]
   ll a,b,c,d,h;
          ^
foehn_phenomena.cpp:56:12: warning: unused variable 'd' [-Wunused-variable]
   ll a,b,c,d,h;
            ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...