solution1(测试点5不通过)
所谓“E天骑行超过E公里”,注意没有要求是第E天
对于直接判断变成了第E天骑行距离超过E公里,曲解了题意
例如对于
3
1 2 3
输出为1
第1天骑行3公里,满足条件;第2天骑行2公里,不满足超过的条件,最大的e为1
#include<iostream>
using namespace std;
int main(){int n, cnt = 0, x;scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", &x);if(x > i) cnt++;}printf("%d", cnt);return 0;
}
solution2
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp(int a, int b){return a > b;
}
const int maxn = 1e5 + 10;
int a[maxn];
int main(){int n, cnt = 0;scanf("%d", &n);for(int i = 1; i <= n; i++){scanf("%d", a + i);}sort(a + 1, a + n + 1, cmp);for(int i = 1; i <= n; i++){if(i < a[i]) cnt++;}printf("%d", cnt);return 0;
}