Submission #1034623

#TimeUsernameProblemLanguageResultExecution timeMemory
1034623NewtonabcFoehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
124 ms13096 KiB
#include<bits/stdc++.h>
using namespace std;
const int N=2e5+10;
const int M=2e5;
long long arr[N],fw[N];

void update(int idx,long long val){
	while(idx<=M+5){
		fw[idx]+=val;
		idx+=idx & -idx;
	}
}

long long read(int idx){
	long long sum=0;
	while(idx>0){
		sum+=fw[idx];
		idx-=idx & -idx;
	}
	return sum;
}
int main(){
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	int n,q;
	long long s,t,sum=0;
	cin>>n >>q >>s >>t >>arr[0];
	for(int i=1;i<=n;i++) cin>>arr[i],update(i,arr[i]),update(i+1,-1*arr[i]);
	for(int i=1;i<=n;i++){
		if(arr[i]>arr[i-1]) sum-=s*(arr[i]-arr[i-1]);
		else sum+=t*abs(arr[i]-arr[i-1]);
		//cout<<sum <<" ";
	}
//	cout<<sum <<"\n";
	while(q--){
		int a,b;
		long long c;
		cin>>a >>b >>c;
		long long l=read(a),pl=0,r=read(b),ar;
		if(a!=1) pl=read(a-1);
		if(b!=n) ar=read(b+1);
		if(l<=pl && l+c>pl) sum-=t*(pl-l)+s*(l+c-pl)/*,cout<<-1 <<" " <<t*(pl-l)+s*(l+c-pl) <<"|"*/;
		if(l>pl && l+c<=pl) sum+=s*(l-pl)+t*(pl-(l+c))/*,cout<<-2 <<" " <<s*(l-pl)+t*(pl-(l+c)) <<"|"*/;
		if(b!=n && ar<=r && r+c<ar) sum-=t*(r-ar)+s*(ar-(r+c))/*,cout<<-3 <<" " <<t*(r-ar)+s*(ar-(r+c)) <<"|"*/;
		if(b!=n && ar>r && ar<=r+c) sum+=s*(ar-r)+t*(r+c-ar)/*,cout<<-4 <<" " <<s*(ar-r)+t*(r+c-ar) <<"|"*/;
		if(l>pl && l+c>pl) sum-=s*c/*,cout<<1 <<" " <<s*c <<"|"*/;
		if(l<=pl && l+c<=pl) sum-=t*c/*,cout<<2 <<" " <<t*c <<"|"*/;
		if(b!=n && ar<=r && ar<=r+c) sum+=t*c/*,cout<<3 <<" " <<t*c <<"|"*/;
		if(b!=n && ar>r && ar>r+c) sum+=s*c/*,cout<<4 <<" " <<s*c <<"|"*/;
		update(a,c),update(b+1,-1*c);
		/*for(int i=1;i<=n;i++) cout<<read(i) <<" ";
		cout<<"|";*/
		cout<<sum;
		cout<<"\n";
	}
	
}

Compilation message (stderr)

foehn_phenomena.cpp: In function 'int main()':
foehn_phenomena.cpp:44:20: warning: 'ar' may be used uninitialized in this function [-Wmaybe-uninitialized]
   44 |   if(b!=n && ar<=r && r+c<ar) sum-=t*(r-ar)+s*(ar-(r+c))/*,cout<<-3 <<" " <<t*(r-ar)+s*(ar-(r+c)) <<"|"*/;
      |      ~~~~~~~~~~~~~~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...