Pagini recente » Cod sursa (job #454767) | Cod sursa (job #309853) | Cod sursa (job #1633595) | Cod sursa (job #2933005) | Cod sursa (job #109736)
Cod sursa(job #109736)
#include<stdio.h>
#include<math.h>
long k,x,j,suma,n,r,rep,i;
int main()
{
freopen("multimi2.in","r",stdin);
freopen("multimi2.out","w",stdout);
scanf("%ld",&n);
if((n%4==0)||((n+1)%4==0))
printf("0\n");
else
printf("1\n");
if(n%4==0)
x=(n/4)*(n+1);
else
if(n%4==3)
x=((n+1)/4)*n;
else
if(n%4==1)
{
k=(n-1)/4;
x=4*k*k+3*k+1;
}
else
if(n%4==2)
{
k=(n-2)/4;
x=4*k*k+5*k+2;
}
r=sqrt(1+8*(double long)x);
r--;
r=r>>1;
if((r&1)==0)
rep=x-((r>>1)*(r+1));
else
rep=x-(r*((r+1)>>1));
/*if(rep==0)
{
printf("%lu\n",r);
for(i=r;i>=1;i--)
printf("%lu ",i);
}
else
{
printf("%lu\n",r+1);
for(i=r;i>=rep;i--)
printf("%lu ",i);
printf("%lu ",rep);
for(i=rep-1;i>=1;i--)
printf("%lu ",i);
} */
if(rep==0)
{
printf("%ld\n",r);
for(i=1;i<=r;i++)
printf("%ld ",i);
printf("\n%ld\n",n-r);
for(i=r+1;i<=n;i++)
printf("%ld ",i);
}
else
{
i=1;
while(i+rep<=r)
i++;
printf("%ld\n",r);
for(j=1;j<i;j++)
printf("%ld ",j);
for(j=i+1;j<=r;j++)
printf("%ld ",j);
printf("%ld",i+rep);
printf("\n%ld\n",n-r);
printf("%ld ",i);
for(j=r+1;j<i+rep;j++)
printf("%ld ",j);
for(j=i+rep+1;j<=n;j++)
printf("%ld ",j);
}
fcloseall();
return 0;
}