OIG XVII - zbi

// https://szkopul.edu.pl/problemset/problem/QBoEU-mOBZc7ZNTM5cERx_S9/site/?key=statement
// OIJ XVII 3 etap
// Zbiór klocków

#include <bits/stdc++.h>

using namespace std;

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

    int n;
    std::cin >> n;

    map<int, int> m;

    for (int i = 0; i < n; i++) {
        int a;
        std::cin >> a;

        m[a]++;
    }

    int ans = 0, prev_sum = 0;

    for (const auto& p : m) {
        int local_ans = min(prev_sum, p.first - 1) + p.second;

        if (local_ans > ans) {
            prev_sum = min(prev_sum, p.first - 1);
            prev_sum += p.second;
            ans = local_ans;
        }
    }

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

    return 0;
}