贴代码:
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
int MAXN=-1,n,a[maxn],c[maxn],h=2,m,k,cx=1000000000+5;
bool flag=0,flagg=0;
void find_(int l,int r,int a[],int k){
if(l>r){
return;
}
int id=(l+r)/2,mid=a[id];
if(k!=mid and flagg==1){
return;
}
if(k<mid){
find_(l,id-1,a,k);
}
if(k==mid){
flag=1;
flagg=1;
cx=min(cx,id);
find_(l,r-1,a,k);
}
if(k>mid){
find_(id+1,r,a,k);
}
return;
}
int main(){
scanf("%d%d",&n,&m);
scanf("%d",&a[1]);
c[1]=a[1];
for(int i=2;i<=n;i++){
scanf("%d",&a[i]);
MAXN=max(MAXN,a[i]);
if(a[i]!=a[i-1]){
c[h]=a[i];
h++;
}
}--h;
for(int i=1;i<=m;i++){
cin>>k;
flag=0,flagg=0;
cx=MAXN+1;
find_(1,n,a,k);
if(flag==1){
cout<<cx<<" ";
}
else{
cout<<-1<<" ";
}
}
return 0;
}
最后一个点TLE80分求助!