P1918 保龄球——二分

二分

P1918

思路

不复杂二分

代码

#include <iostream>
#include <algorithm>
using namespace std;


typedef struct S{
    int x, i;
} S;

int n, m;
S a[100010];


int Binary(int x)
{
    int l = 0, r = n - 1;
    while (l < r)
    {
        int mid = l + r >> 1;
        if (a[mid].x >= x) r = mid;
        else l = mid + 1;
    }
    if (a[l].x == x) return a[l].i + 1;
    else return 0;
}

bool cmp(S a, S b)
{
    return a.x < b.x;
}

int main()
{
    cin >> n;
    for (int i = 0; i < n; i ++ ) cin >> a[i].x, a[i].i = i;
    sort(a, a + n, cmp);
    // for (int i = 0; i < n; i ++ ) cout << a[i].x << " "; cout << endl;

    cin >> m;
    while (m -- )
    {
        int x;
        cin >> x;
        cout << Binary(x) << endl;
    }
}
posted @ 2025-08-02 16:42  Roin_Long  阅读(10)  评论(0)    收藏  举报