不知道为什么死循环不输出
#include<bits/stdc++.h>
using namespace std;
long long n,q,s,l,r,mid,a,b;
struct Line{
long long id;
long long nom;
}L[114514];
bool cmp(Line x,Line y){
return x.nom<y.nom;
}
bool cmpn(Line x,Line y){
return x.id<y.id;
}
int main(){
scanf("%lld",&n);
scanf("%lld",&q);
for(int i=1;i<=n;i++){
L[i].id=i;
scanf("%lld",&L[i].nom);
}
sort(L+1,L+n+1,cmp);
for(int i=1;i<=q;i++){
scanf("%lld",&s);
l=1,r=n,a=0;
while(l<=r){
mid=(l+r)/2;
if(L[mid].nom==s){
a=mid;
r=mid-1;
}else if(L[mid].nom>s){
r=mid-1;
}else{
l=mid+1;
}
}
l=1,r=n,b=0;
while(l<=r){
mid=(l+r)/2;
if(L[mid].nom>=s){
b=mid;
r=mid-1;
}else{
l=mid+1;
}
}
if(a==0){
printf("-1\n");
}else{
sort(L+a,L+b-1,cmpn);
printf("%lld\n",L[a].id);
}
}
return 0;
}