求 Hack
查看原帖
求 Hack
529296
ydzr00000楼主2023/11/15 19:38

通过枚举中间项以及公差,在枚举次数达到 10910^9 时判定无解,可以通过(时间跟我的线段树差不多)。

int n,tot=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
	scanf("%d",&a[i]);
	pos[a[i]]=i;
}
for(int j=1;j<=(n-1)/2;j++)
	for(int i=j+1;i<=n-j;i++)
	{
		int x=pos[i],y=pos[i-j],z=pos[i+j];
		tot++;
		if(tot==1000000000)
		{
			puts("N");
			goto over;
		}
		if(y<=x&&x<=z||z<=x&&x<=y)
		{
			puts("Y");
			goto over;
		}
	}
puts("N");
over:; 
2023/11/15 19:38
加载中...