#include<bits/stdc++.h>
#define N 1000005
using namespace std;
int n,m,k,l,r,t,a[N];
signed main(){
scanf("%d%d",&n,&m);
memset(a,-1,sizeof(a));
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
while(m--){
scanf("%d",&k);
l=r=1,t=n;
while(r){
if(a[l+r]<=k) l+=r,r=min(r<<1,t-l);
else t=l+r-1,r>>=1;
}
while(a[l-1]==k) l--;
if(a[l]==k) printf("%d ",l);
else printf("-1 ");
}
return 0;
}
总是T掉第6个点。
是因为要查找的数都比较偏后吗?