# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
17901 | 2016-01-13T06:51:01 Z | chrome | 금 캐기 (IZhO14_divide) | C++ | 0 ms | 0 KB |
#include <bits/stdc++.h> using namespace std; #define ll long long #define foreach(it, S) for (__typeof (S.begin()) it = S.begin(); it != S.end(); it++) #define all(x) x.begin(), x.end() #define endl '\n' #define _ ios_base :: sync_with_stdio(false); cin.tie(NULL); #ifdef inputf #define fname "" #else #define fname "" // <- Here #endif const double eps = 1e-9; const int MaxN = int(2e5) + 256; const int MOD = int(1e9) + 7; template <typename T> inline T gcd(T a, T b) { return b ? gcd (b, a % b) : a; } inline bool Palindrome(const string& s) { return equal(s.begin(), s.end(), s.rbegin()); } ll x[MaxN], g[MaxN], e[MaxN]; int main() { // _ #ifdef lcl freopen(fname".in", "r", stdin); freopen(fname".out", "w", stdout); #endif int n; scanf("%d", &n); for (int i = 1; i <= n; ++i) { scanf("%lld%lld%lld", x + i, g + i, e + i); e[i] += e[i - 1]; g[i] += g[i - 1]; } ll res = 0; int l = 1, r = 1; while (l <= r) { if (r == n) { while (l <= r) { if (x[r] - x[l] <= e[r] - e[l - 1]) res = max(res, g[r] - g[l - 1]); ++l; } break; } while (r < n && x[r] - x[l] <= e[r] - e[l - 1]) { res = max(res, g[r] - g[l - 1]); ++r; } else { ++l; } } printf("%lld", res); return 0; }