定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。
现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n;cin >> n;
vector<int> v(n);
for (int i = 0;i < n;++i) cin >> v[i];
sort(v.begin(), v.end());
int half = n / 2,i,d=0;
if (v[half] > half) {
//向前拉长距离
for (i = half - 1;i >=0;--i)
if (v[i] <=(n - i)) break;
d = n - i - 1;
}
else {
//向后寻找
for (i = half + 1;i < n;++i)
if (v[i] > (n - i)) {
d = n - i;
break;
}
}
cout << d;
return 0;
}
注意全部为0的情况,所以将d初始化为0
23667788910
23677788910
12233
12223