蒟蒻二分求助
查看原帖
蒟蒻二分求助
170410
向晚楼主2020/11/6 18:51

蒟蒻复习二分 结果发现代码炸了 求大佬解答

#include<iostream>
#include<algorithm>
using namespace std;
int n,m,f;
struct node{
	int id;
	int pl;
}a[100005],ans[100005];
int cmp(node x,node y){
	return x.id<y.id;
}
int cmp1(node x,node y){
	return x.pl<y.pl;
}
void check(int x,int y){
	int l=1,r=n;
	while(l<r){
		int mid=l+(l+r)/2;
		if(a[mid].id>=x) r=mid;
		else l=mid+1;
	}
	if(a[l].id==x){
		ans[y].id=a[l].id;
		ans[y].pl=a[l].pl;
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i].id;
		a[i].pl=i;
	}
	sort(a+1,a+n+1,cmp);
	for(int i=1;i<=m;i++){
		cin>>f;
		check(f,i);
	}
	sort(ans+1,ans+m+1,cmp1);
	for(int i=1;i<=m;i++) cout<<ans[i].id<<' ';
	return 0;
}
2020/11/6 18:51
加载中...