Text Summary
To solve this problem, there are two essential points:
- Understand the Problem Statement:
据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数” E ,即满足有 E 天骑车超过 E 英里的最大整数 E。 - Calculating the Edington Number (E):
Calculate E by sorting the cycling data and finding the maximum integer E such that on E days, the individual cycled more than E miles:
sort(v.begin(), v.end(), cmp);
int e = 0;
for (int i = 0; i < n; i++) {
if (i + 1 < v[i])
e = i + 1;
else
break;
}
Code Summary
#include <bits/stdc++.h>
using namespace std;
bool cmp(int a, int b) {return a > b;}
int main() {
#ifndef ONLINE_JUDGE
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
#endif
int n;
cin >> n;
vector<int> v(n);
for (int i = 0; i < n; i++)
cin >> v[i];
sort(v.begin(), v.end(), cmp);
int e = 0;
for (int i = 0; i < n; i++) {
if (i + 1 < v[i])
e = i + 1;
else
break;
}
cout << e << endl;
}