0pts RE求调
查看原帖
0pts RE求调
1063062
lihuohua楼主2025/8/30 12:28
#include<bits/stdc++.h>
using namespace std;

int a[100000];
int b[100000];
int c[100000];
int d[100000];

void sor(int l, int r) {
    if(l >= r) {
        return;
    }
    int mid = (l + r) / 2;
    sor(l, mid);
    sor(mid + 1, r);
    int i = l;
    int j = mid + 1;
    int k = l;
    while(k <= r) {
        if(i > mid || (j <= r && a[j] < a[i])) {
            c[k] = a[j];
            d[k] = b[j];
            ++k;
            ++j;
        } else {
            c[k] = a[i];
            d[k] = b[i];
            ++k;
            ++i;
        }
    }
    for(int i = l; i <= r; ++i) {
        a[i] = c[i];
        b[i] = d[i];
    }
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n;
    int m;
    cin >> n >> m;
    for(int i = 0; i < n; ++i) {
        cin >> a[i];
        b[i] = i + 1;
    }
    sor(0, n - 1);
    for(int i = 0; i < m; ++i) {
        int x;
        cin >> x;
        auto ans = lower_bound(a, a + n, x);
        if(b[ans-a] > n) {
            cout << "-1" << " ";
        } else if(a[ans-a] > x) {
            cout << "-1" << " ";
        } else {
            cout << b[ans-a] << " ";
        }
    }
    return 0;
}
2025/8/30 12:28
加载中...