WA求助!!!

AT_code_thanks_festival_2015_c 集合写真

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,但是我习惯用桶排序


|