Submission #337564

#TimeUsernameProblemLanguageResultExecution timeMemory
337564BY_KUTBILIM금 캐기 (IZhO14_divide)C++14
100 / 100
40 ms4992 KiB
/** @BY_KUTBILIM **/ #include <bits/stdc++.h> using namespace std; #define ff first #define ss second #define pb push_back #define ll long long ll mn[100100]; int binsearch(int pos, ll find){ int l = 1, r = pos; while(l < r){ int m = (l + r) / 2; if(mn[m] <= find){ r = m; } else l = m + 1; } return r; } int main(){ ios_base::sync_with_stdio(false); cin.tie(); int n; cin >> n; ll x[n+1], g[n+1], d[n+1]; ll pg[n+1], pd[n+1]; pg[0] = pd[0] = 0; ll ans = 0; for(int i = 1; i <= n; i++){ cin >> x[i] >> g[i] >> d[i]; pg[i] = pg[i-1] + g[i]; pd[i] = pd[i-1] + d[i]; } mn[0] = 1e18; for(int r = 1; r <= n; r++){ mn[r] = min(mn[r-1], pd[r-1] - x[r]); int l = binsearch(r, pd[r] - x[r]); ans = max(ans, pg[r] - pg[l-1]); } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...