出现两个假球同样的情况
查看原帖
出现两个假球同样的情况
345930
Gold14526楼主2022/1/25 12:03
using namespace std;
int a,b,s1,s2,s;
char t;
void find(int l,int r,int x)
{
	if(x==0)return;
	if(l==r&&x==1)
	{
		if(a!=0) b=l;
		else a=l;
		return;
	}
	putchar('0');
	if(x==1)
	{
		if((r-l+1)%3==2)
		{
			s=(r-l+1)/3+1;
		}
		else
		{
			s=(r-l+1)/3;
		}
		s1=l+s-1;
		s2=s1+s;
		printf("1 %d",s);
		for(int i=l;i<=s1;i++)
		{
			printf(" %d",i);
		}
		printf(" %d",s);
		for(int i=s1+1;i<=s2;i++)
		{
			printf(" %d",i);
		}
		putchar('\n');
		cin>>t;
		if(t=='=')
		{
			find(s2+1,r,x);
		}
		else if(t=='<')
		{
			find(l,s1,x);
		}
		else if(t=='>')
		{
			find(s1+1,s2,x);
		}
	}
	else if(x==2)
	{
		s=(r-l+1)/2;
		s1=l+s-1;
		s2=s1+s;
		printf("1 %d",s);
		for(int i=l;i<=s1;i++)
		{
			printf(" %d",i);
		}
		printf(" %d",s);
		for(int i=s1+1;i<=s2;i++)
		{
			printf(" %d",i);
		}
		putchar('\n');
		cin>>t;
		if(t=='=')
		{
			find(l,s1-1,x-1);
			find(s1,s2-1,x-1);
		}
		else if(t=='<')
		{
			find(l,s1,x);
		}
		else if(t=='>')
		{
			find(s1+1,s2,x);
		}
	}
}
int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int n;
	scanf("%d",&n);
	find(1,n,2);
	if(a>b)
	{
		swap(a,b);
	}
	printf("2 %d %d",a,b);
	return 0;
}
/*
500
276 384


1~250 251~500
251~375 376~500
251~291 292~332
251~264 265~278
265~269 270~274
275 276


1~250x 251~500
251~375 376~500
251~291 292~332x
251~264x 265~278
265~269x 270~274x
275x 276

*/
2022/1/25 12:03
加载中...