Submission #298602

#TimeUsernameProblemLanguageResultExecution timeMemory
298602reymontada61Foehn Phenomena (JOI17_foehn_phenomena)C++14
30 / 100
1002 ms11468 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
const int MXN = 200005;
int n, q, s, t;
int diff[MXN]; // diff[i] -> i-1 to i
int height[MXN];
int temp;

int get(int of) {
	if (of > 0) return -s * of;
	else return abs(t * of);
}

void upd(int pos, int by) {
	temp -= get(diff[pos]);
	diff[pos] += by;
	temp += get(diff[pos]);
}

signed main() {

	cin >> n >> q >> s >> t;
	for (int i=0; i<=n; i++) {
		cin >> height[i];
	}
	
	for (int i=1; i<=n; i++) {
		diff[i] = height[i] - height[i-1];
		temp += get(diff[i]);
	}
	
	for (int i=0; i<q; i++) {
		
		int l, r, x;
		cin >> l >> r >> x;
		
		upd(l, x);
		if (r < n) upd(r+1, -x);
		
		cout << temp << endl;
		
	}

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...