Submission #490012

#TimeUsernameProblemLanguageResultExecution timeMemory
490012hoanghq2004Bigger segments (IZhO19_segments)C++14
100 / 100
111 ms38468 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")

using namespace std;

const int Nmax = 5e5 + 10;

int n;
long long s[Nmax];
vector <int> cands[Nmax];
int f[Nmax];
pair <int, int> best;

int main() {
    ios :: sync_with_stdio(0); cin.tie(0);
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        cin >> s[i];
        s[i] += s[i - 1];
    }
    memset(f, -1, sizeof(f));
    f[0] = 0;
    cands[1].push_back(0);
    for (int i = 1; i <= n; ++i) {
        for (auto j: cands[i]) best = max(best, {f[j] + 1, j});
        f[i] = best.first;
        int t = lower_bound(s + 1, s + n + 1, s[i] * 2 - s[best.second]) - s;
        cands[t].push_back(i);
    }
    cout << f[n];
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...