题目来源:https://codeforces.com/contest/1165/problem/B

题意:做题,第一天做一个,第二天做两个,第n天做n个,给你一个数组,你第n天可以选择一个数组中的数,选过了的就不能选了,如果至少有比n大,就算成功练习了一天。问最多能练习多少天。

思路:sort之后遍历即可。

参考代码:

#include<bits/stdc++.h>
using namespace std;
#define LL long long
#define PII pair<int,int>
#define PB push_back
#define POP pop_back
#define FI first
#define SE second
#define endl '\n'
#define ls x<<1
#define rs x<<1|1
const int N=3e6+7,mod=1e9+7,INF=1e9;
int n,m,x,y;
int a[N],b[N];
char s[N],ss[N];
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    sort(a+1,a+1+n);
    int ans=1;
    for(int i=1;i<=n;i++)
        if(a[i]>=ans)ans++;
    cout<<ans-1<<endl;
    return 0;
}