样例输入:
11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6
样例输出:
1 2 -1
二分查找模板代码:
#include <iostream>
using namespace std;
typedef long long ll;
const ll maxn = 1000005;
ll num[maxn] = {0};
ll findy(ll n,ll k){
ll l=1,r=n,mid;
while(l<r){
mid = l+(r-l)/2;//胜过mid=(l+r)/2
if(num[mid]>=k) r=mid;
else l=mid+1;//不包含相等,故+1
}
if(num[l]==k) return l;
else return -1;
}
int main()
{
ll n,m;
cin>>n>>m;
for(ll i=1;i<=n;i++) cin>>num[i];
while(m--){
ll k;
cin>>k;
cout<<findy(n,k)<<' ';
}
return 0;
}