样例过,求解!
查看原帖
样例过,求解!
751062
Diary_Of_Young楼主2024/7/20 16:59
#include<bits/stdc++.h>

using namespace std;

const int N=1e6+10;
int a[N],b[N];

int bsearch1(int a[],int l,int r,int p)
{
	while(l<r)
	{
		int mid=(l+r)>>1;
		if(a[mid]>=p)
		{
			r=mid;
		}
		else{
			l=mid+1;
		}
	}  	
	return l;
}
int bsearch2(int a[],int l,int r,int p)
{
	while(l<r)
	{
		int mid=(l+r+1)>>1;
		if(a[mid]<=p)
		{
			l=mid;
		}
		else{
			r=mid-1;
		}
	}  	
	return l;
}

int main()
{
	int n;
	int x;
	std::ios::sync_with_stdio(false);
	cin>>n>>x;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
		for(int i=1;i<=x;i++)
	{
		cin>>b[i];
	}
	for(int o=1;o<=x;o++)
	{
	int z=bsearch1(a,1,n,b[o]);
	int g=bsearch2(a,1,n,b[o]);
	if(a[z]!=a[g])
	{
		cout<<"-1 "<<endl;
		continue;
	}
	cout<<z<<" ";
	}
	return 0;
}
2024/7/20 16:59
加载中...