#1~5WA,#6TLE(样例过了)
查看原帖
#1~5WA,#6TLE(样例过了)
938397
y6hz楼主2023/7/31 22:08
#include<iostream>
#include<algorithm>
using namespace std;
inline int read(int x) {
    char ch = getchar();
    x = 0;
    while (ch >= '0' && ch <= '9') {
        x = x * 10 + ch - '0';
        ch = getchar();
    }
    return x;
}
inline void write(int x) {
    if(x > 9)
        write(x / 10);
    putchar(x % 10 + '0');
}
int main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n, m, q, a[1000000];
    bool b = 0;
    n = read(n), m = read(m);
    for (register int i = 0; i < n; ++i)
        a[i] = read(a[i]);
    int l = 0, r = n - 1, mid;
    for (register int i = 0; i < m; ++i) {
        b = 0;
        l = 0, r = n - 1, mid = (l + r) / 2;
        q = read(q);
        while (l < r) {
            if (b)
                break;
            if (mid == l || mid == r)
                b = 1;
            if (a[mid] == q) {
                if (mid)
                    while (a[mid - 1] == a[mid])
                        mid--;
                write(mid + 1);
                cout << ' ';
                break;
            }
            if (a[mid] < q) {
                l = mid;
                mid = (l + r) / 2;
            }
            else if (a[mid] > q) {
                r = mid;
                mid = (l + r) / 2;
            }
        }
        if (a[mid] != q)
            cout << "-1 ";
    }
    return 0;
}

是二分出问题了吗

2023/7/31 22:08
加载中...