求助
  • 板块灌水区
  • 楼主LRX1029
  • 当前回复8
  • 已保存回复8
  • 发布时间2024/8/5 18:30
  • 上次更新2024/8/5 19:34:40
查看原帖
求助
1058676
LRX1029楼主2024/8/5 18:30

不知道为什么死循环不输出

#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;
}
2024/8/5 18:30
加载中...