第一个WA,最后一个TLE
查看原帖
第一个WA,最后一个TLE
1184377
Glocker楼主2024/5/21 17:41

写得又臭又长,望大佬帮我改一改

#include <bits/stdc++.h>
using namespace std;
int nl[11451400];
int ml[11451400];
int main(){
	int n,m,c=0;
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>nl[i];
	}
	for(int i=1;i<=m;i++)
	{
		cin>>ml[i];
	}
	int l=1,r=n,mid;
	for(int i=1;i<=m;i++)
	{
		l=1,r=n,c=0;
		while(l<=r)
		{
			mid=(l+r)/2;
			if(nl[mid]==ml[i])
			{
				for(int j=mid;j>=l;j--)
				{
					if(nl[j-1]<ml[i])
					{
						cout<<j<<' ';
						c=1;
						break;
					}
				}
				break;
			}
			else if(nl[mid]<ml[i])
			{
				l=mid+1;
			}
			else if(nl[mid]>ml[i])
			{
				r=mid-1;
			}
		}
		if(c==0)
		{
			cout<<"-1 ";
		}
	}
}
2024/5/21 17:41
加载中...