输入n个不超过10的九次方的单调不减的(就是后面的数字不小于前面的数字)的非负整数
a1,2,..an,然后进行m.次询问。对于每次询问,给出一个整数 q,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出-1。
输入格式
第一行2个整数n和m,表示数字个数和询问次数。
第二行n个整数,表示这些待查询的数字。
第三行m个整数,表示询问这些数字的编号,从1开始编号。
输出格式
输出一行,m个整数,以空格隔开,表示答案。
#include<stdio.h>
int a[1000000],b[1000000];
int main(){
int m,n,ans=-1,i,mid;
scanf("%d%d",&n,&m);
getchar();
for(i=0;i<n;i++)scanf("%d",&a[i]);
i=0;
while(m-->=0){
scanf("%d",&b[i]);i++;
int l=0,r=n-1;
while(l<=r){
int mid=(l+r)/2;
if(b[i-1]<=a[mid]){
ans=mid;
r=mid-1;
}
else l=mid+1;
}
if(ans!=-1)printf("%d ",ans);
}
return 0;
}
哪里错了
如输入
11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6应输出1 2 -1
但是却不是