Submission #1279326

#TimeUsernameProblemLanguageResultExecution timeMemory
1279326IBoryDivide and conquer (IZhO14_divide)C++20
100 / 100
47 ms9804 KiB
#include <bits/stdc++.h>
#define pii pair<ll, ll>
typedef long long ll;
using namespace std;

const int MAX = 100007;
ll X[MAX], G[MAX], D[MAX], PD[MAX];

int main() {
	ios::sync_with_stdio(0); cin.tie(0);
	int N;
	cin >> N;
	for (int i = 1; i <= N; ++i) {
		cin >> X[i] >> G[i] >> D[i];
		G[i] += G[i - 1];
		PD[i] = PD[i - 1] + D[i];
	}

	for (int i = 1; i <= N; ++i) PD[i] = PD[i] - X[i];

	ll ans = 0;
	set<pii> S;
	for (int i = N; i > 0; --i) {
		if (S.empty() || (*--S.end()).first < PD[i]) S.emplace(PD[i], G[i]);
		auto it = S.lower_bound({PD[i] - D[i], 0});
		if (it != S.end()) ans = max(ans, (*it).second - G[i - 1]);
	}

	cout << ans;
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...