再听wa一片
查看原帖
再听wa一片
218974
wsadjkl0楼主2021/4/7 16:40

放上感觉目前写的最好的代码

#include<stdio.h>
long a[1000001],b[100001];
int main()
{
	int n,m,i,st,ed,x,j,k;
	scanf("%d%d",&n,&m);

a[0]=-1;
	for(i=1;i<=n;i++)
		scanf("%d",&a[i]);

	for(i=0;i<m;i++)
		scanf("%d",&b[i]);

	for(i=0;i<m;i++)
	{
		x=b[i];
		st=1;ed=n;
		while(1)
		{
k=ed-(ed-st)/2;
j=st+(ed-st)/2;
if(x<=a[k]) ed-=(ed-st)/2;
if(x>=a[j]) st+=(ed-st)/2;
//printf("%d %d\n---%d %d\n",st,ed,j,k);
//监测点,大佬可以去掉斜杠查看运行
if(ed==st+1) break;
		}

if(x!=a[ed]&&x!=a[st]) printf("-1 ");
else if(x==a[ed]&&x!=a[st]) 
printf("%d ",ed);
else printf("%d ",st);
	}
	return 0;
}




2021/4/7 16:40
加载中...