class Solution {
public:
int hIndex(vector<int>& citations) {
int n = citations.size();
int left = 0;
int right = n - 1;
while (left < right) {
int mid = (left + right) / 2;
if (citations[mid] >= n - mid) {
right = mid;
} else {
left = mid + 1;
}
}
if (citations[right] < n - right) {
return 0;
}
return n - right;
}
};