数学问题
参考柳神的解法
从大到小排序后结果为10、9、8、8、7、7、6、6、3、2。
坑点如下
1,根据排序后的数组可得知骑车大于等于 a[i] 英里的天数有 i+1 天,因为题目中要求超过E英里且所有的英里数为整数,所以可得知骑车超过 a[i]-1 英里的天数有 i+1 天
2,最后求的是满足a[i]>=i+2的最大i+1;
整体代码如下
#include<bits/stdc++.h>
using namespace std;
int number[100100];
int main(){
int n,i=0;
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&number[i]);
sort(number,number+n,greater<int>());
while(number[i]>=i+2&&i<=n-1){i++;}
printf("%d\n",i);
return 0;
}