1060 爱丁顿数(25)(25 分)
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。
现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。
输入格式:
输入第一行给出一个正整数N(<=10^5^),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。
输出格式:
在一行中给出N天的爱丁顿数。
输入样例:
10
6 7 6 9 3 10 8 2 7 8
输出样例:
6
pat25分的题果然都不简单,虽然代码很短,唉,还是我太菜了,看了题解才明白,果然是我想的太麻烦了。
思路就是:从大到小排序,看看那一天的骑行数大于天数,然后取最大的就可以惹。
看起来很简单,代码也很简单,但是真的一点都不好想。最好想的就是我为什么这么菜!
1 #include <iostream> 2 #include <algorithm> 3 #include <string> 4 #include <string.h> 5 #include <math.h> 6 #include <map> 7 #include <queue> 8 #include <stack> 9 typedef long long ll; 10 using namespace std; 11 int maxN = 0; 12 bool cmp(int a, int b) { 13 return a > b; 14 } 15 int main() 16 { 17 int n; 18 cin >> n; 19 int a[n]; 20 for(int i = 0; i < n; i++) { 21 cin >> a[i]; 22 } 23 sort(a, a + n, cmp); 24 for(int i = 0; i < n; i++) { 25 if(a[i] > i+1) { 26 maxN = i+1; 27 } 28 } 29 cout << maxN; 30 }