#include<iostream>
using namespace std;
int n,m,a[1000010];
int find(int x){
int l=1,r=n+1;
while(l<r){
int mid=l+(r-1)/2;
if(a[mid]>=x) r=mid;
else l=mid+1;
}
if(a[l]==x) return l;
return -1;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++){
int x;
scanf("%d",&x);
printf("%d ",find(x));
}
return 0;
}
#include<cstdio>
using namespace std;
int n,m,a[1000010];
int find(int x){
int l=1,r=n;
while(l<r){
int mid=l+(r-l)/2;
if(a[mid]>=x) r=mid;
else l=mid+1;
}
if(a[l]==x) return l;
return -1;
}
int main(){
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
for(int i=0;i<m;i++){
int x;
scanf("%d ",&x);
int ans=find(x);
printf("%d ",ans);
}
return 0;
}
Why?