#6 TLE求助 !悬关!!!
查看原帖
#6 TLE求助 !悬关!!!
995948
sybnb楼主2024/1/8 21:24
#include<bits/stdc++.h>
using namespace std;
const int N=1e6;
int n,m;
int a[N],q;
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;++i){
		scanf("%d",&a[i]);
	}
	while(m--){
		scanf("%d",&q);
		if(a[1]>q||a[n]<q) {
			printf("-1 ");
			continue;
		}
		int l=1,r=n;
		int ans=-1;
		int afe=0;
		while(l<r){
			int mid=l+(r-l)/2;
			if(afe==mid){
				break;
			}
			afe=mid;
			if(a[mid]>q){
				r=mid;
			}
			else if(a[mid]<q){
				l=mid;
			}
			else if(a[mid]==q){
				if(mid==1) {
					ans=mid;
					break;
				}
				if(a[mid]==q&&a[mid-1]!=q) {
					ans=mid;
					break;
				}
				r=mid;
			}
		}
		printf("%d ",ans);
	}
	return 0;
}

2024/1/8 21:24
加载中...