Submission

Status:
[PPPPPPP-SSSS]

Score: 0

User: detectives_conan

Problemset: 01.H-index

Language: cpp

Time: 0.111 second

Submitted On: 2025-04-01 09:41:30

/*
    Author : detective conan
    Problem : H-index
    Created : 01/04/2025 09:25 UTC+7
*/
#include <bits/stdc++.h>
#define FOR(i, s, t) for(int i = s; i <= t; ++i)
#define rep(i, s, t) for(int i = s; i >= t; --i)
#define HAVE_TESTCASE false
#define vec vector
#define pil pair<int, i64>
#define pli pair<i64, int>
#define pii pair<int, int>
#define pll pair<i64, i64>
#define tiil tuple<int, int, i64>
#define tlii tuple<i64, int, int>
#define all(a) a.begin(), a.end()
#define great(a) a, vec<a>, greater<a>
#define lbv(a, m) lower_bound(all(a), m) - a.begin()
#define ubv(a, m) upper_bound(all(a), m) - a.begin()
#define pb push_back
#define ppb pop_back
#define pf push_front
#define ppf pop_front
#define eb emplace_back
#define F first
#define S second
#define conan cin.tie(nullptr)->sync_with_stdio(false)

using namespace std;
using u8 = uint8_t;
using u32 = unsigned;
using i64 = int64_t;
using u64 = uint64_t;

const int MAX_N = 3e6;
int n, h[MAX_N];

void solve(){
    cin >> n;
    FOR(i, 1, n) cin >> h[i];
    int l = 0, r = 1e9, ans = 0;
    while(l <= r){
        int mid = (l + r) >> 1, cnt = 0;
        FOR(i, 1, n) cnt += (h[i] >= mid);
        if(cnt >= mid) ans = mid, l = mid + 1;
        else r = mid - 1;
    }
    cout << ans;
}

int main(){
    conan;
    int t = 1;
    if(HAVE_TESTCASE) cin >> t;
    while(t--) solve();
}