1117. Eddington Number(25)
British astronomer Eddington liked to ride a bike. It is said that in order to show off his skill, he has even defined an "Eddington number", E -- that is, the maximum integer E such that it is for E days that one rides more than E miles. Eddington's own E was 87.
Now given everyday's distances that one rides for N days, you are supposed to find the corresponding E (<=N).
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N(<=105), the days of continuous riding. Then N non-negative integers are given in the next line, being the riding distances of everyday.
Output Specification:
For each case, print in a line the Eddington number for these N days.
Sample Input:10 6 7 6 9 3 10 8 2 7 8Sample Output:
6
讲每日的距离存在数组ride中按从大到小排序,然后从i=1开始遍历,同时用k记录遍历过的个数,若遇到i >= ride[i],停止,k = i-1。k即为结果
题解:
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAX = 100010;
int ride[MAX] = {0};
int n;
bool cmp(int a, int b){
return a > b;
}
int main(){
scanf("%d", &n);
for(int i = 1; i <= n; i++){
scanf("%d", &ride[i]);
}
sort(ride+1, ride+n+1, cmp);
int k = 0;
for(int i = 1; i <= n; i++){
if(i >= ride[i]){
k = i-1;
break;
}
k++;
}
printf("%d", k);
return 0;
}