RT,WA是询问次数太多,TLE是真的TLE,求大佬帮忙调一调/kel
//Think twice,code once.
#include<cstdio>
#include<string>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,ans1,ans2;
void solve(int l,int r,int b)
{
// printf("debug:%d %d %d\n",l,r,b);
if(l==r)
{
if(ans1==0) ans1=l;
else ans2=l;
return ;
}
if(l+1==r)
{
if(b==2) ans1=l,ans2=r;
else
{
printf("1 1 %d 1 %d\n",l,r);
fflush(stdout);
char ch;
cin>>ch;
if(ch=='<')
{
if(ans1==0) ans1=l;
else ans2=l;
}
else
{
if(ans1==0) ans1=r;
else ans2=r;
}
}
return ;
}
if(b==1)
{
int num=(r-l+1)/3;
if((r-l+1)%3==2) num++;
printf("1 ");
printf("%d ",num);
for(int i=l;i<=l+num-1;i++) printf("%d ",i);
printf("%d ",num);
for(int i=l+num;i<=l+2*num-1;i++) printf("%d ",i);
puts("");
fflush(stdout);
char ch;
cin>>ch;
if(ch=='<') solve(l,l+num-1,1);
else if(ch=='>') solve(l+num,l+2*num-1,1);
else solve(l+2*num,r,1);
}
else
{
int num=(r-l+1)/2;
printf("1 ");
printf("%d ",num);
for(int i=l;i<=l+num-1;i++) printf("%d ",i);
printf("%d ",num);
for(int i=l+num;i<=l+2*num-1;i++) printf("%d ",i);
puts("");
fflush(stdout);
char ch;
cin>>ch;
if(ch=='=') solve(l,l+num-1,1),solve(l+num,l+2*num-1,1);
else
{
if(ch=='<')
{
printf("1 1 %d 1 %d\n",l+num,r);
fflush(stdout);
cin>>ch;
if(ch=='=') solve(l,l+num-1,2);
else solve(l,l+num-1,1),solve(l+2*num,r,1);
}
else
{
printf("1 1 %d 1 %d\n",l,r);
fflush(stdout);
cin>>ch;
if(ch=='=') solve(l+num,l+2*num-1,2);
else solve(l+num,l+2*num-1,1),solve(l+2*num,r,1);
}
}
}
return ;
}
int main()
{
scanf("%d",&n);
solve(1,n,2);
printf("2 %d %d\n",ans1,ans2);
fflush(stdout);
return 0;
}
//123 406