AcWing 1607. 爱丁顿数
原题链接
简单
作者:
eveer
,
2021-08-27 10:13:01
,
所有人可见
,
阅读 222
/*
题目的含义是,E天的时间里每天都骑行大于E公里,那么我们只需要知道这E天时间里面最小的里程数是否大于E公里
我们可以将原有的每天骑行公里数按照从大到小排序,例如得到
a , b , c , d , e
那么前三天的最小里程数是c,我们需要判断c是否大于3公里,如果大于3公里,则3是爱丁顿数
*/
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n;//一共有多少天骑行
int a[N];//记录每天的骑行公里数,从1开始
bool cmp(int a,int b)
{
return a>b;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
sort(a+1,a+1+n,cmp);//从大到小排序
int q=1;
while(q<=n&&a[q]>q)q++;//q天骑行的最小公里数大于q
printf("%d",q-1);//满足条件的是q-1
}