不明白为什么我这个二分一个测试点都过不了
查看原帖
不明白为什么我这个二分一个测试点都过不了
614091
2021xiaohu楼主2023/3/31 22:32
#include<bits/stdc++.h>
using namespace std;
long long a[110000]
long long n,t;
int fum(long long s)
{
	int re=1;
	int lf=n;
	int mip=0;
	while(re<=lf)
	{
		mip=re+(lf-re)/2;
		if(a[mip]==s)
		return mip;
		else if(a[mip]>s)
		lf=mip-1;
		else if(a[mip]<s)
		re=mip+1;
	}
	return 0;
}
int main()
{
	cin>>n>>t;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
	}
	for(int i=1;i<=t;i++)
	{
		long long b;
		cin>>b;
		if(fum(b,n)!=0)
		{
			int k=fum(b,n);
			while(a[k-1]==a[k])
			k--;
		  cout<<k<<" ";
			
		}
		else
		cout<<-1<<" "; 
	}
    return 0;
}
2023/3/31 22:32
加载中...