80分,最后一点超时了
查看原帖
80分,最后一点超时了
1061050
jiangyunuo楼主2025/1/23 11:53
#include<bits/stdc++.h>
using namespace std;
int n,m;
int a[1000000];
int b;
int ans;
void cz(int l,int r){
	int mid=(l+r)/2;
	if(a[mid]<b){
	    if((mid+r)/2==mid)return;
		cz(mid,r);
	}
	if(a[mid]>b){
	    cz(l,mid);
	}
	if(a[mid]==b){
		if(a[mid-1]==b)cz(l,mid);
		else ans=mid;
	}
	return;
}
int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++){
		scanf("%d",&a[i]);
	}
	for(int i=1;i<=m;i++){
		ans=0;
		scanf("%d",&b);
		cz(1,n);
		if(ans)printf("%d ",ans);
		else printf("-1 ");
	}
    return 0;
}
2025/1/23 11:53
加载中...