求助大佬用的二分也超时了
查看原帖
求助大佬用的二分也超时了
1125841
abundan楼主2023/12/18 18:48
#include <bits/stdc++.h>
using namespace std;

int a[1000000],b[100000],c[100000];

int main() 
{
	int n,m;
	scanf("%d %d",&n,&m);
	for(int i=0;i<n;i++)scanf("%d",&a[i]);
	for(int i=0;i<m;i++)c[i]=-1;
	for(int j=0;j<m;j++)scanf("%d",&b[j]);

	int left,right,mid;
	for(int i=0;i<m;i++){
		left=0;
		right=n-1;
		while(left<=right){
			mid=(left+right)/2;
			if(b[i]==a[mid])
				c[i]=mid+1;
			else if(b[i]<mid){
				right=mid-1;
			}
			else
				left=mid-1;
		}
	}
	for(int i=0;i<m;i++)printf("%d",c[i]);
	return 0;
}
2023/12/18 18:48
加载中...