题目描述
小杨同学为了提高自己的实力制定了做题计划,在第k天时,他必须要完成k道题,否则他就会偷懒。
小杨同学现在找到了一个题库,一共有n套题单,每一套题单中有一定数量的题目。但是他十分挑剔,每套题单他只会使用一次,每一天也只能使用一套题单里的题目,之后那套题单就会被弃之不用。对于每套题单,他不必完成题单内所有的题。
那么问题来了,小杨同学最多会做题几天才偷懒呢?
输入
第一行,1个数为n,表示有多少套题单。
第二行,n个整数a1,a2...an ,分别表示每套题单有多少道题。
输出
输出一行,小杨同学偷懒前最多做题天数。
样例输入
4 3 1 4 1
样例输出
3
提示
对于全部数据,保证有 1<=n<=10^6 , 1<=ai<=10^9。
解题思路
sort排序+双层循环枚举+标记数组
代码
#include <bits/stdc++.h>
using namespace std;
long long n,a[100010],ans;
bool b[100010];
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
sort(a+1,a+1+n);
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(a[j]>=i&&b[j]==0)
{
ans++;
b[j]=1;
break;
}
}
}
cout<<ans;
return 0;
}