64分一个WA一个TLE求教
查看原帖
64分一个WA一个TLE求教
1409439
yan_cheng楼主2024/10/25 16:21
#include<stdio.h>

int main(){
	int n,k,s=-1;
	scanf("%d %d",&n,&k);
	int shu[n],a,cha[k];
	for (int l=0;l<n;l++){
		scanf("%d",&shu[l]);//读取 
	}
	for (int l=0;l<k;l++){ //二分查找 
		scanf("%d",&a);
		int i=0,j=n-1;	
		while(i<=j){
			s=(i+j)/2;	
			if(shu[s]>a){
				j=s-1;
			}
			if(shu[s]<a){
				i=s+1;
			}
			if(shu[s]==a)break;
		}
		while(shu[s-1]==a){ //找相同数中的第一个 
			s--;
		}	
		if(i>j){ //没找到存入-1 
			cha[l]=-1;
		}
		else{
			cha[l]=s+1;
		}
		s=-1;
	}
	for (int l=0;l<k-1;l++){ //输出 
		printf("%d ",cha[l]);
	}
	printf("%d\n",cha[k-1]);
	return 0;
}
2024/10/25 16:21
加载中...