OIG XIV - usu

// https://szkopul.edu.pl/problemset/problem/GaEXAH5Qch_5uUAmF7FtwmMt/site/?key=statement
// OIG XIV (2 etap)

#include <algorithm>
#include <iostream>
#include <queue>
#include <vector>

int main() {
    std::ios_base::sync_with_stdio(0);
    std::cin.tie(0);
    std::cout.tie(0);

    int n;
    std::cin >> n;

    std::vector<int> v(n);

    for (int i = 0; i < n; i++) {
        std::cin >> v[i];
    }
    v.push_back(-1);

    std::priority_queue<int> q;

    int ans = 1;
    int sum = v[0] + 1;

    if (sum >= n) {
        std::cout << ans << '\n';
        return 0;
    }

    for (int i = 1; i <= sum; i++) {
        q.push(v[i]);
    }

    int h = -1;

    while (sum < n) {
        int r = q.top();
        q.pop();

        h = sum + 1;
        sum += r + 1;

        for (int i = h; i <= std::min(sum, n); i++) {
            q.push(v[i]);
        }

        ans++;
    }

    std::cout << ans << '\n';

    return 0;
}