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;
}