80分求调
查看原帖
80分求调
1037749
xiesichen666楼主2024/11/4 17:30
#include<bits/stdc++.h>
//#include<windows.h>
using namespace std;
const int N=1000000+1;
int a[N];
int l,r,mid=0,n,gs,mc;
void find(int k,int l,int r){
	while(l<r){
		mid=(l+r)/2;
		if(a[mid]==k&&a[mid-1]!=k){
			printf("%d ",mid);
			return;
		}else{
			if(a[mid]>k){
				r=--mid;
			}else{
				if(a[mid-1]==k){
					r--;
				}else{
					l=mid+1;				
				}
			}
		}
	}
	if(a[l]!=k){
		printf("-1 ");
	}else{
		printf("%d ",l);
	}
}
int main(){
	scanf("%d%d",&n,&gs);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=gs;i++){
		l=1;
		r=n;
		scanf("%d",&mc);
		find(mc,l,r);
	}
	return 0;
}

80分,最后一个点TLE,求调!!!!!!!!!

2024/11/4 17:30
加载中...