23、做题
小杨同学为了提⾼自己的实⼒制定了做题计划,在第 k 天时,他必须要完成 k 道题,否则他就会偷懒。
小杨同学现在找到了⼀个题库,⼀共有 n 套题单,每⼀套题单中有⼀定数量的题目。但是他十分挑剔,每套题单他只会使用⼀次,每⼀天也只能使用⼀套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。那么问题来了,字杨同学最多会做题几天才偷懒呢?
【输入格式】
第⼀行,1个数为n,表示有多少套题单。
第二行,n个整数a₁, a₂, ..., aₙ ,分别表示每套题单有多少道题。
【输出格式】
输出⼀行,字杨同学偷懒前最多做题天数。
【输入样例】
4
3 1 4 1
3
对于全部数据,保证有1≤n≤10⁶ , 1≤aᵢ≤10⁹。
【输出样例】
3
【参考程序】
// 爱码岛编程
#include <bits/stdc++.h>
using namespace std;
#const int MAXN = 1000005
int arr[MAXN];
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> arr[i];
}
sort(arr + 1, arr + n + 1);
int k = 1, ans = 0;
for (int i = 1; i <= n; i++) {
if (k <= arr[i]) {
k++;
ans++;
}
}
cout << ans << endl;
return 0;
}