제출 #232779

#제출 시각아이디문제언어결과실행 시간메모리
232779huangqrFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
144 ms8188 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll asize=2e5+5;
ll n,q,s,t,d[asize],pdsum=0,ndsum=0;

int main(){
	ios_base::sync_with_stdio(0),cin.tie(NULL);
	cin>>n>>q>>s>>t;
	ll k,pre,a,b,c;
	n++;
	for(int i=0;i<n;i++){
		cin>>k;
		if(i){
			d[i]=k-pre;
			if(d[i]>=0)pdsum+=d[i];
			else ndsum-=d[i];
		}
		pre=k;
	}
/*	cout<<"d array\n";
	for(int i=0;i<n;i++){
		cout<<d[i]<<" ";
	}
	cout<<"\npdsum="<<pdsum<<"\tndsum="<<ndsum<<"\n";*/
	for(int i=0;i<q;i++){
		cin>>a>>b>>c;
		ll ov=d[a];
		d[a]+=c;
		if(ov>=0){
			if(d[a]>0)pdsum+=c;
			else{
				pdsum-=ov;
				ndsum-=(c+ov);
			}
		}
		else{
			if(d[a]<0)ndsum-=c;
			else{
				ndsum+=ov;
				pdsum+=(c+ov);
			}
		}
		b++;
		if(b==n)goto cont;
		ov=d[b];
		c=-c;
		d[b]+=c;
		if(ov>=0){
			if(d[b]>0)pdsum+=c;
			else{
				pdsum-=ov;
				ndsum-=(c+ov);
			}
		}
		else{
			if(d[b]<0)ndsum-=c;
			else{
				ndsum+=ov;
				pdsum+=(c+ov);
			}
		}
		cont:
/*	cout<<"d array\n";
	for(int i=0;i<n;i++){
		cout<<d[i]<<" ";
	}
	cout<<"\npdsum="<<pdsum<<"\tndsum="<<ndsum<<"\n";*/
		cout<<ndsum*t-pdsum*s<<"\n";
	}
	return 0;
}

/*
ll ftp[asize],ftn[asize],n=asize,q,s,t;

void update(ll ft[],ll p,ll v){
	for(;p<=n;p+=(p & -p))ft[p]+=v;
	return;
}

ll query(ll ft[],ll p){
	ll ans=0;
	for(;p>0;p-=(p & -p))ans+=ft[p];
	return ans;
}


void rupdate(ll l, ll r,ll v){
	update(ftm,l,v);
	update(ftm,r+1,-v);
	update(ftc,l,-1*(l-1)*v);
	update(ftc,r+1,r*v);
	return;
}

ll rquery(ll l,ll r){
	return r*query(ftm,r)+query(ftc,r)-(l-1)*query(ftm,l-1)-query(ftc,l-1);
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...