求大佬帮忙!
查看原帖
求大佬帮忙!
293822
1607numy楼主2021/8/15 15:17

大佬帮忙指教一下(优化一下),80pts,1TLE,剩下AC

#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    ios::sync_with_stdio(false);
    int n,m;
    cin>>n>>m;
    int a[n],b[m];
    for(int i=0;i<n;i++)
    cin>>a[i];
    for(int j=0;j<m;j++)
    cin>>b[j];
    for(int j=0;j<m;j++)
    {
    		int flag=0,l=0,r=n-1;
    		while(l<=r)
    		{
    			int mid=(l+r)/2;
    			if(b[j]>a[mid])
    			{
    				l=mid+1;
				}
    			if(b[j]<a[mid])
    			{
    				r=mid-1;
				}
				if(b[j]==a[mid])
    			{
    				int mid1=mid;
    				while(a[mid1]==a[mid]&&mid1>=0)//找第一次出现的数
    				{
    					mid1--;
					}
					cout<<mid1+2<<" ";
    				flag=1;
    				break;
				}
			}
			if(flag==0)
			{
				cout<<-1<<" ";
			}
	}
	return 0;
}

谢谢!!!

2021/8/15 15:17
加载中...