7-7 找数
输入n个按升序排列的整数,m次询问,每次询问一个整数X,请输出数组中X第一次出现的下标,如果不存在则输出-1。
题目保证输入的整数在16位int范围内.
输入格式:第一行输入n和m(1<=n<=1000000,1<=m<=100000)
第二行输入用空格分隔的n个整数
第三行输入用空格分隔的m次询问的X
输出格式:在一行中输出m个用空格分隔的整数,行末有换行但无多余空格,每个整数表示询问的答案
输入样例:9 6 1 1 2 2 3 4 5 5 5 1 2 3 4 5 6
结尾无空行
输出样例:0 2 4 5 6 -1
结尾无空行
#include
#include
using namespace std;
int a[1000000];
int main()
{
int n,m,i,b[100000],j=1,x;bool flag=0;
scanf("%d%d",&n,&m);
for(i=0;i
sort(a,a+n);
for(i=0;i
x=lower_bound(a,a+n,b[i])-a;
if(flag)printf(" ");
if(x!=n){printf("%d",x);flag=1;}
else {printf("-1");flag=1;}
}
return 0;
}
//使用二分查找的LOWER_BOUND函数,可以比较方便的写完代码。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)