Source:
Description:
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 (≤).
Input Specification:
Each input file contains one test case. For each case, the first line gives a positive integer N (≤), 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 8
Sample Output:
6
Keys:
- 模拟题
Code:
/*
Data: 2019-07-19 18:27:10
Problem: PAT_A1117#Eddington Number
AC: 13:54 题目大意:
E数定义:E天之中,骑行米数超过E的最大天数 基本思路:
从大到小排序,找到最大的i,使A[i]>i
*/ #include<cstdio>
#include<functional>
#include<algorithm>
using namespace std;
const int M=1e5+;
int e[M]; int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("Test.txt", "r", stdin);
#endif int n,pos;
scanf("%d", &n);
for(int i=; i<=n; i++)
scanf("%d", &e[i]);
sort(e+,e+n+,greater<int>());
for(pos=; pos<=n; pos++)
if(e[pos] <= pos)
break;
if(pos==n && e[n]>n)
printf("%d", pos);
else
printf("%d", pos-); return ;
}