Submission #1320128

#TimeUsernameProblemLanguageResultExecution timeMemory
1320128kenkunkinBigger segments (IZhO19_segments)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>

using namespace std;

void Init()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}

typedef long long ll;
int n;
const int maxn = 500005;
ll a[maxn];

bool check(int k)
{
    ll last = 0;
    ll cur = 0;
    int seg = 0;
    int i = n - 1;
    while (i >= 0)
    {
        cur += a[i];
        if (cur >= last)
        {
            last = cur;
            cur = 0;
            seg++;
            if (seg > k) return false;
        }
        i--;
    }
    if (cur > 0 && cur < last) return false;
    return seg <= k;
}

int solve()
{
    int l = 1;
    int r = n;
    int ans = 1;
    while (l <= r)
    {
        int mid = (l + r) / 2;
        if (check(mid))
        {
            ans = mid;
            l = mid + 1;
        }
        else
        {
            r = mid - 1;
        }
    }
    return ans;
}

void Input()
{
    cin >> n;
    for (int i = 0; i < n; i++)
        cin >> a[i];
}

void Bai()
{
    cout << solve() << "\n";
}

int main()
{
    Init();
    Input();
    Bai();
    return 0;
}
#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...