为什么会T
查看原帖
为什么会T
524091
dami826楼主2023/9/10 14:30
#include<bits/stdc++.h>
using namespace std;
long long s[1000001];
int find(int left,int right,long long goal){
	int mid; 
	while(left<right){
		mid=(left+right)/2;
		if(s[mid]==goal){
			while(s[mid-1]==s[mid]&&mid>1){
				mid--;
			}
			return mid;
		}
		if(s[mid]>goal){
			right=mid;
		}
		else{
			left=mid+1;
		}
	}
	if(s[mid]==goal){
		while(s[mid-1]==s[mid]&&mid>1){
			mid--;
		}
		return mid;
	}
	return -1;
	
}
int main(){
	long long n,m;
	scanf("%lld %lld",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&s[i]);
	}
	for(int i=1;i<=m;i++){
		long long goal;
		scanf("%lld",&goal);
		printf("%d",find(1,n,goal));
		if(i!=m){
			printf(" ");
		}
	}
	return 0;
} 
2023/9/10 14:30
加载中...