Submission #171391

#TimeUsernameProblemLanguageResultExecution timeMemory
171391VEGAnnDivide and conquer (IZhO14_divide)C++14
100 / 100
83 ms5972 KiB
#include <bits/stdc++.h> #define all(x) x.begin(),x.end() #define sz(x) ((int)x.size()) #define PB push_back #define MP make_pair #define ft first #define sd second #define pll pair<ll, ll> using namespace std; typedef long long ll; const ll OO = 1e18; const int N = 100100; vector<pll> vc; vector<ll> suf; ll ans = 0; int n, x[N], g[N], e[N]; void calc(int l, int r){ if (l == r){ ans = max(ans, (ll)g[l]); return; } int md = (l + r) >> 1; calc(l, md); calc(md + 1, r); vc.clear(); ll sm = 0, en = 0; for (int i = md; i >= l; i--) { sm += g[i]; en += e[i]; vc.PB(MP(en + x[i], sm)); } sort(all(vc)); suf.resize(sz(vc) + 1); suf[sz(vc)] = -OO; for (int i = sz(vc) - 1; i >= 0; i--) suf[i] = max(suf[i + 1], vc[i].sd); sm = en = 0; for (int i = md + 1; i <= r; i++){ sm += g[i]; en += e[i]; int ps = lower_bound(all(vc), MP(-(en - ll(x[i])), -OO)) - vc.begin(); ans = max(ans, suf[ps] + sm); } } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); // freopen("penguins.in","r",stdin); freopen("penguins.out","w",stdout); // freopen("in.txt","r",stdin); cin >> n; for (int i = 0; i < n; i++) cin >> x[i] >> g[i] >> e[i]; calc(0, n - 1); cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...