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;
}
}

浙公网安备 33010602011771号