最后一个点TLE,要疯了
查看原帖
最后一个点TLE,要疯了
1077879
Cyn0313楼主2024/5/25 16:02
#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000010];
int f(int a[],int x)
{
	int l=1,r=n,mid;
	while(l<=r)
	{
		mid = (l+r)/2;
		if(a[mid]>x)
		{
			r = mid-1;
		}
		else if(a[mid]<x)
		{
			l = mid+1;
		}
		else return mid;
	}
	return -1;
}
int main()
{
	cin >> n >> m;
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<=m;i++)
	{
		int k;
		cin >> k;
		int u = f(a,k);
		while(a[u]==a[u-1] && u>1) u--;
		cout << u << " ";
	}
	return 0;
}
2024/5/25 16:02
加载中...