Pagini recente » Monitorul de evaluare | Cod sursa (job #3310629) | Cod sursa (job #2872978) | Cod sursa (job #2677062) | Cod sursa (job #1733676)
#include <fstream>
#include <cstdio>
using namespace std;
ifstream fin("multimi2.in");
long long n,i,s,ct,p;
bool v[1000005];
int main()
{freopen("multimi2.out","w",stdout);
fin>>n;
p=n*(n+1)/2;
if(n==2)printf("1\n1\n2\n1\n1");
else if(n==3)printf("0\n2\n1 2\n1\n3");
else if(p%2==0){printf("0\n");
s=0;
p=p/2;
for(i=n;i>=1;i--)
{s=s+i;
if(s>p){s=s-i;break;}
else {v[i]=1;ct++;}
}
if(s!=p)ct++;
printf("%d\n",ct);
for(i=n;i>=1;i--)
{if(v[i]==1)printf("%d ",i);
else break;
}
if(s!=p){printf("%d ",p-s);}
printf("\n%d\n",n-ct);
for(i=1;i<=n;i++)
{if(v[i]==0&&i!=p-s)printf("%d ",i);
else if(i==p-s)continue;
else break;
}
}
else {printf("1\n");
s=0;p=p/2;
for(i=n;i>=1;i--)
{s=s+i;
if(s>(p)+1){s=s-i;break;}
else {v[i]=1;ct++;}
}
if(s!=p+1){ct++;}
printf("%d ",ct);
for(i=n;i>=1;i--)
if(v[i]==1)printf("%d ",i);
else break;
if(s!=p){printf("%d ",p+1-s);}
printf("\n%d\n",n-ct);
for(i=1;i<=n;i++)
{if(v[i]==0&&i!=p+1-s)printf("%d ",i);
else if(i==p+1-s)continue;
else break;
}
}
}