Submission #946957

#TimeUsernameProblemLanguageResultExecution timeMemory
946957mariamp1Foehn Phenomena (JOI17_foehn_phenomena)C++14
100 / 100
310 ms13144 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
 
const int maxn = 2e5+10;
 
ll n, q, a[maxn];
ll sum, dif[maxn], s, t;
 
int main()
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
 
	cin >> n >> q >> s >> t;
 
	for(int i = 0 ; i <= n ; i++) cin >> a[i];	
 
	for(int i = 1 ; i <= n ; i++)
	{
		dif[i] = a[i]-a[i-1];
		if(dif[i] <= 0) sum += abs(dif[i]*t);
		else sum -= abs(dif[i]*s);
	}
 
	//cout << sum << endl;
 
	dif[0] = dif[n+1] = 0;
 
	//for(int i = 1 ; i <= n ; i++) cout << dif[i] << ' ';
	//cout << endl;
 
	for(int i = 0 ; i < q ; i++)
	{
		int l, r, x;
		cin >> l >> r >> x;
 
		//cout << dif[l] << ' ' << dif[r+1] << endl; 
 
		if(dif[l] <= 0) sum -= abs(dif[l]*t);
		else sum += abs(dif[l]*s);
 
		if(dif[r+1] <= 0) sum -= abs(dif[r+1]*t);
		else sum += abs(dif[r+1]*s);
 
		dif[l] += x;
		if(r+1 <= n) dif[r+1] -= x;
 
		if(dif[l] <= 0) sum += abs(dif[l]*t);
		else sum -= abs(dif[l]*s);
 
		if(dif[r+1] <= 0) sum += abs(dif[r+1]*t);
		else sum -= abs(dif[r+1]*s);		
	
		//cout << dif[l] << ' ' << dif[r+1] << endl; 
 
		cout << sum << endl;
	
	//	for(int i = 1 ; i <= n ; i++) cout << dif[i] << ' ';
//	cout << endl;
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...