看起来是把某些有解的情况判无解了
#include<stdio.h>
int main()
{
int a,b;
scanf("%d%d",&a,&b);//输入
int n[a],q[b];//序列,查询
for(int i = 0;i < a;i++)//输入
{
scanf("%d",&n[i]);
}
for(int i = 0;i < b;i++)//输入
{
scanf("%d",&q[i]);
}
int l = 0,r = a - 1,m = l + (r - l) / 2;//初始化(多此一举)
for(int i = 0;i < b;i++)
{
l = 0,r = a - 1;//emm……
if(q[i] == n[l])//第一个就是
{
m = 0;//索引0
}
else if(q[i] == n[r] && q[i] != n[r - 1])//最后一个是
{
m = a - 1;//索引a-1
}
else//都不是
{
while(n[m] != q[i])//找
{
m = l + (r - l) / 2;//计算m
if(r - l <= 1)//无解(应该吧),注意我的提交记录表示我把有解判成无解了
{
m = -2;//负1 -1 = -2
break;//不用找了
}
if(q[i] > n[m])//小了
{
l = m;
}
else//大了
{
r = m;
}
}
while(m > 0 && n[m - 1] == q[i])//一直往前找
{
m--;
}
}
printf("%d ",m + 1);//输出
}
return 0;//再见
}
请问各位大佬们哪里错了?