萌新第二次写二分法遇到这迷惑的问题QAQ前面几个点都过了
#include<iostream>
using namespace std;
int a[1000005],b[1000005];
int main()
{
int m,n,mid;
cin>>m>>n;
for(int i=0;i<m;i++) cin>>a[i];
for(int i=0;i<n;i++) cin>>b[i];
for(int i=0;i<n;i++)
{
int left=0,right=m-1;
while(right>=left)
{
mid=(left+right)/2;
if (a[mid]>b[i])
{
right=mid-1;
}
if (a[mid]<b[i])
{
left=mid+1;
}
if (a[mid]==b[i])
{
break;
}
}
int p=mid;
if(a[p]!=b[i])
{
cout<<"-1 ";
continue;
}
if(p>0){
while(a[p]==b[i]&&a[p-1]==b[i]) p--;
}
cout<<p+1<<" ";
}
return 0;
}