80分求助!!!
查看原帖
80分求助!!!
1313368
caozeheng楼主2024/4/24 17:53

用的二分,第六个tle了!!!(难受)

#include<bits/stdc++.h>
using namespace std;
int m1[1000010],m2[100010];
int main(){
	int a,b;
	cin>>a>>b;
	for (int i=1;i<=a;i++) cin>> m1[i];
	for (int i=0;i<b;i++) cin>> m2[i];
	for (int i=0;i<b;i++){
		int l=1,r=a,m;
		while(l<=r){
			m=(l+r)/2;
			if(m1[m]<=m2[i]) l=m+1;
			else r=m-1;
		}
		while(m1[r-1]==m2[i]&&r>1) r--;
		if(m1[r]!=m2[i])cout<<"-1"<<" ";
		else cout<<r<<" ";
	}
	return 0;
}
2024/4/24 17:53
加载中...