a2lyaXNhbWUgbWFyaXNh @ 2022-02-14 20:52:35
AT1717 代码:
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int x;
cin>>x;
for(int i=0;i<n;i++){
if(x<=a[i]){
cout<<i+1<<endl;
}
else{
cout<<n+1<<endl;
}
}
return 0;
}
by liangbowen @ 2022-02-14 20:57:30
肯定有问题呀,只输出一个数,你却非要输出n个数
by liangbowen @ 2022-02-14 20:58:39
就是
for(int i=0;i<n;i++){
if(x<=a[i]){
cout<<i+1<<endl;
}
else{
cout<<n+1<<endl;
}
}
这一段的锅。
改正的话就是在合适的地方跳出循环。
你思考一下吧。
by a2lyaXNhbWUgbWFyaXNh @ 2022-02-14 20:59:58
咝,难道是我手残把break;……给删了……?
by a2lyaXNhbWUgbWFyaXNh @ 2022-02-14 21:02:41
@liangbowen e,神犇,还是错的……
#include<iostream>
using namespace std;
int main(){
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
int x;
cin>>x;
for(int i=0;i<n;i++){
if(x<=a[i]){
cout<<i+1<<endl;
break;
}
else{
cout<<n+1<<endl;
break;
}
}
return 0;
}
by liangbowen @ 2022-02-14 21:21:14
额。。你的思路好像不对呀。。
自己去看看第一篇题解,和你的思路十分相近。
by liangbowen @ 2022-02-14 21:22:29
其实这题的正解(或说更快的办法?)是二分。
by YYaini @ 2023-05-15 17:00:48
你把第一个输入带进去 = =发现输出是4
by Chase12345 @ 2023-09-02 15:17:14
#include <bits/stdc++.h>
using namespace std;
int a[1000000], n, key;
void BucketSort (int a[], int n) {
map <int, int> check;
for (int i = 1; i <= n; i++)
check[a[i]]++;
int index( 1);
for (auto p : check)
for (int i = 1; i <= p.second; i++)
a[index++] = p.first;
}
int main() {
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
BucketSort (a, n);
cin >> key;
cout << upper_bound (a + 1, a + n + 1, key) - a << endl;
return 0;
}
by Chase12345 @ 2023-09-02 15:17:46
这样就可以了,甚至可以直接sort,但是我习惯用桶排序