第一个测试点是wa,最后一个超时,求助
查看原帖
第一个测试点是wa,最后一个超时,求助
727348
Dreamcatching楼主2022/7/21 11:01
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MAXN=1e6+10;
int a[MAXN],n;
int find(int x){
	int l,r;
	l=1;
	r=n;
	int mid;
	while(l<=r){
		mid=(l+r)/2;
		if(x>a[mid]) l=mid+1;
		else if(x<a[mid]) r=mid-1;
		else{
			int c=a[mid];
			if(a[mid-1]==c){
				while(a[mid]==c) mid--;
			    return mid+1;
			} else return mid;
		} 
	}
	return -1;
}
int main(){
	//freopen("123.in","r",stdin); 
	//freopen("123.out","w",stdout);
	int m,p;
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=m;i++){
		scanf("%d",&p);
		int b=find(p);
		printf("%d ",b);
	}
	//fclose(stdin);
	//fclose(stdout);
	return 0;
}
2022/7/21 11:01
加载中...