学习C++从娃娃抓起!记录下在学而思小猴编程学习过程中的题目,记录每一个瞬间。侵权即删,谢谢支持!
附上汇总贴:小猴编程C++ | 汇总-CSDN博客
【题目描述】
某班有n个学生,编号1~n。中午下课后,学生们陆续赶到食堂吃饭。食堂只有一个打饭窗口,所以学生们要排队打饭。
小猴是负责维护秩序的志愿者,他需要组织这些学生排成一条队伍买饭就餐。第i位学生的耐心指数为 a i a_i ai,它的含义是:如果在i号之前,排队的人数超过了 a i a_i ai,他就会放弃排队;否则他就会留下。
请问小猴应该如何安排这些学生的排队次序,才能使得留下吃饭的人最多?
【输入】
第一行一个整数n;
第二行n个整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_n a1,a2,…,an。
【输出】
一行一个整数,表示留下吃饭的最大人数。
【输入样例】
5
4 1 0 2 1
【输出样例】
4
【代码详解】
#include <bits/stdc++.h>
using namespace std;
int n, a[1000005], stay;
int main()
{
cin >> n;
for (int i=1; i<=n; i++)
cin >> a[i];
sort(a+1, a+n+1);
for (int i=1; i<=n; i++)
if (stay<=a[i]) stay++;
cout << stay << endl;
return 0;
}
【运行结果】
5
4 1 0 2 1
4