Submission

Status:
[PPPPPPPPPPPP]

Score: 100

User: fluke

Problemset: 01.H-index

Language: cpp

Time: 0.389 second

Submitted On: 2025-04-05 19:58:41

#include <bits/stdc++.h>
#define ll long long 
#define f first 
#define s second 
#define pii pair<int,int>
#define emb emplace_back
#define em emplace
#define all(x) x.begin(),x.end()
#define sp <<" "<<
#define DB cout<<"\n";system("pause");
using namespace std;
int inf = 1e9;
ll INF = 1e18;

int n;

bool can(ll mid , vector <int> &arr){
    int index = lower_bound(all(arr),mid) - arr.begin();
    index = n - index;
    
    if(index >= mid)return true;
    return false;
}


int main(){
ios::sync_with_stdio(false);cin.tie(0); 
    cin>>n;
    vector <int> arr(n);
    for(int i=0;i<n;i++)cin>>arr[i];
    sort(all(arr));

    ll left = 0 , right = 1e9;
    ll h_index = 0;

    while(left <= right){
        ll mid = (left + right)/2;

        if(can(mid,arr)){
            left = mid + 1;
            h_index = mid;
        }
        else {
            right = mid - 1;
        }
    }

    cout<<h_index;


}