Submission #172690

#TimeUsernameProblemLanguageResultExecution timeMemory
172690tselmegkhDivide and conquer (IZhO14_divide)C++14
17 / 100
221 ms4496 KiB
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;

int x[N], g[N], d[N];
bool vis[N];
int main(){
	int n;
	cin >> n;
	for(int i = 1; i <= n; i++){
		cin >> x[i] >> g[i] >> d[i];	
	}
	long long curenergy = 0, curgold = 0, ans = 0;
	int r = 0;
	for(int i = 1; i <= n; i++){
		if(i > r){
			curenergy += d[i];
			curgold += g[i];
			r = i;
		}
		while(curenergy < x[r] - x[i]){
			curenergy -= d[r];
			curgold -= g[r];
			r--;
		}
		while(r + 1 <= n && curenergy + d[r + 1] >= x[r + 1] - x[i]){
			curenergy += d[r + 1];
			curgold += g[r + 1];
			r++;
		}
		ans = max(ans, curgold);
		curenergy -= d[i];
		curgold -= g[i];
	}
	cout << ans << '\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...