题目描述
某班有 个学生,编号 。中午下课后,学生们陆续赶到食堂吃饭。食堂只有一个打饭窗口,所以学生们要排队打饭。
小猴是负责维护秩序的志愿者,他需要组织这些学生排成一条队伍买饭就餐。第 位学生的耐心指数为 ,它的含义是:如果在 号之前,排队的人数超过了 ,他就会放弃排队;否则他就会留下。
请问小猴应该如何安排这些学生的排队次序,才能使得留下吃饭的人最多?
【输入格式】
第一行一个整数 ;
第二行 n 个整数 。
【输出格式】
一行一个整数,表示留下吃饭的最大人数。
【输入输出样例#1】
输入#1
5 4 1 0 2 1
输出#1
4
【输入输出样例#2】
输入#2
7 2 2 6 5 4 0 6
输出#2
7
【输入输出样例#3】
输入#3
5 2 4 2 0 2
输出#3
4
【数据范围】
对于 的数据:,。
【代码示例】
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e6 + 5;
int n, p[MAXN];
int main() {
cin >> n;
for (int i = 0; i < n; i++) {
cin >> p[i];
}
sort(p, p + n);
int ans = 0;
for (int i = 0; i < n; i++) {
if (p[i] >= ans) {
ans++;
//cout << p[i] << ' ' << ans << endl;
}
}
cout << ans << endl;
}