最后一个点超时了,这是我的代码:
#include <iostream>
using namespace std;
int nums[1000001], qst;
int n, q;
void Search()
{
int l = 0, r = n + 1;
int mid = (l + r) / 2;
while (nums[mid] != qst) // 二分
{
if (nums[mid] > qst)
r = mid;
else
l = mid;
mid = (l + r) / 2;
if (r - l <= 1)
{
cout << -1 << " ";
return;
}
}
while (nums[mid] == nums[mid - 1]) // 找第一次出现的位置
{
--mid;
}
cout << mid << " ";
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> q;
nums[0] = -1;
for (int i = 1; i <= n; ++i)
cin >> nums[i];
for (int i = 1; i <= q; ++i)
{
cin >> qst;
Search();
}
return 0;
}