题目描述
输入n(n)个不超过的单调不减的(就是后面的数字不小于前面的数字)非负整数,,...,然后进行m(m)次询问。对于每次询问,给出一个整数q(q) ,要求输出这个数字在序列中第一次出现的编号,如果没有找到的话输出-1。
输入格式
第一行2个整数n和m,表示数字个数和询问次数。
第二行n个整数,表示这些待查询的数字。
第三行m个整数,表示询问这些数字的编号,从1开始编号。
输出格式
m个整数表示答案。
代码
#include<iostream>
using namespace std;
const int N = 1e6+10;
int n,m;
int a[N];
int get_left(int x){
int l = 1,r = n;
while(l < r){
int mid = l + r >> 1;
if(x <= a[mid]){
r = mid;
} else {
l = mid + 1;
}
}
return a[l] == x ? l : -1;
}
int main(){
cin >> n >> m;
for(int i = 1;i <= n;i++){
cin >> a[i];
}
while(m--){
int x;
cin >> x;
cout << get_left(x) << " ";
}
return 0;
}