求助!两个WA一个TLE!
查看原帖
求助!两个WA一个TLE!
606419
juanjuan666楼主2022/1/19 17:17
#include<stdio.h>
int n;
int find(int a[],int n,int q);
int main()
{
	int m,i,j;
	scanf("%d%d",&n,&m);
	int a[n];//装样本数字
	int b[m],c[m];//b装要查找的数字,c装所在的位置 
	for(i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	}
	for(i=0;i<m;i++)
	{
		scanf("%d",&b[i]);
	}
	for(i=0;i<m;i++)
	{
		c[i]=find(a,n,b[i]);
		while(a[c[i]-1]==a[c[i]]&&a[c[i]]!=-2)//前一个和它相等
		{
			c[i]--;	
		} 
	}
	for(i=0;i<m;i++)
	{
		printf("%d ",c[i]+1);
	}
	return 0;
}
int find(int a[],int n,int q)
{
	int left=0,right ,mid;
	right = n-1;
	while(left<=right)
	{
		mid=(left+right)/2;
		if(q<a[mid])
		{
			right = mid-1;
		}
		else
		{
			if(q>a[mid])
			{
				left = mid+1;
			}
			else
			{
				return mid;
			}
		}
	}
	return -2;
}
2022/1/19 17:17
加载中...