Submission #868139

#TimeUsernameProblemLanguageResultExecution timeMemory
86813912345678Divide and conquer (IZhO14_divide)C++17
100 / 100
51 ms12628 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx=1e5+5;
ll d[nx], g[nx], p[nx], qs[nx], qsp[nx], n, res, mn=LLONG_MAX;
set<pair<ll, ll>> s;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n;
    for (int i=1; i<=n; i++) cin>>d[i]>>g[i]>>p[i], qs[i]=qs[i-1]+g[i], qsp[i]=qsp[i-1]+p[i];
    for (int i=1; i<=n; i++)
    {
        if (qsp[i-1]-d[i]<mn) mn=qsp[i-1]-d[i], s.insert({mn, -qs[i-1]});
        res=max(res, prev(s.upper_bound(make_pair(qsp[i]-d[i], LLONG_MAX)))->second+qs[i]);
    }
    cout<<res;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...