PAT 甲级 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 (≤), 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
【不知道这题想干啥,让我一度怀疑自己中文水平都有问题】
【理解题意之后,2分钟就写完了,然而最后一个测试点WA]
1 #include<bits/stdc++.h> 2 using namespace std; 3 4 int main() 5 { 6 int n, cnt = 0; cin >> n; 7 for(int i = 1; i <= n; i++) 8 { 9 int x; cin >> x; 10 if(x > i) cnt++; 11 } 12 cout << cnt; 13 return 0; 14 }
【AC代码】
1 #include <iostream> 2 #include <vector> 3 #include <algorithm> 4 using namespace std; 5 int main() { 6 int N, e = 0; 7 scanf("%d", &N); 8 vector<int> v(N); 9 for(int i = 0; i < N; i++) 10 scanf("%d", &v[i]); 11 sort(v.begin(), v.end(), greater<int>()); 12 while(e < N && v[e] > e+1) e++; 13 printf("%d", e); 14 return 0; 15 }
"享受理解算法思路后的无上快感吧"