Submission #1277820

#TimeUsernameProblemLanguageResultExecution timeMemory
1277820alahunovahmadDivide and conquer (IZhO14_divide)C++20
100 / 100
22 ms3560 KiB
#include<bits/stdc++.h>
#define int  long long
using namespace std;
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	cin >> n;
	long long g[n], d[n], x[n], pmax[n];
	for (int i = 0, _g, _d; i < n; i++) {
		cin >> x[i] >> _g >> _d;
		g[i] = (i ? g[i - 1] : 0) + _g;
		d[i] = (i ? d[i - 1] : 0) + _d;
		pmax[i] = x[i] - (i ? d[i - 1] : 0);
		if (i && pmax[i - 1] > pmax[i])
			pmax[i] = pmax[i - 1];
	}
	long long ans = 0;
	for (int r = 0; r < n; r++) {
		int left = 0, right = r;
		while (left < right) {
			int mid = (left + right) >> 1;
			if (x[r] - d[r] <= pmax[mid])
				right = mid;
			else
				left = mid + 1;
		}
		int l = right;
		if (x[r] - d[r] <= pmax[l])
			ans = max(ans, g[r] - (l ? g[l - 1] : 0));
	}
	cout << ans;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...