排序后,找出最大的和a[i]+i>=max,sum++;
#include<stdio.h>
#include<algorithm>
using namespace std;
int a[300001];
inline bool cmp(int a,int b){return a>b;}
int main()
{
int n,Max=-1,i,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++)scanf("%d",&a[i]);
sort(a,a+n,cmp);
for(i=0;i<n;i++)
if(Max<a[i]+i+1)
Max=a[i]+i+1;
for(i=0;i<n;i++)
if(a[i]+n>=Max)sum++;
printf("%d\n",sum);
return 0;
}