放上感觉目前写的最好的代码
#include<stdio.h>
long a[1000001],b[100001];
int main()
{
int n,m,i,st,ed,x,j,k;
scanf("%d%d",&n,&m);
a[0]=-1;
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=0;i<m;i++)
scanf("%d",&b[i]);
for(i=0;i<m;i++)
{
x=b[i];
st=1;ed=n;
while(1)
{
k=ed-(ed-st)/2;
j=st+(ed-st)/2;
if(x<=a[k]) ed-=(ed-st)/2;
if(x>=a[j]) st+=(ed-st)/2;
//printf("%d %d\n---%d %d\n",st,ed,j,k);
//监测点,大佬可以去掉斜杠查看运行
if(ed==st+1) break;
}
if(x!=a[ed]&&x!=a[st]) printf("-1 ");
else if(x==a[ed]&&x!=a[st])
printf("%d ",ed);
else printf("%d ",st);
}
return 0;
}