Cod sursa(job #109570)

Utilizator pirvupirvu tudor pirvu Data 25 noiembrie 2007 11:56:19
Problema Multimi2 Scor 80
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.28 kb
#include<stdio.h>

long n,k,i;


int main()

{

freopen("multimi2.in","r",stdin);
freopen("multimi2.out","w",stdout);


// difminima este 0 cand n este de forma m4 sau m4+3  deoarece fiecare suma=m4*(m4+1)/4 sau (m4+3)m4 /4  care este naturala si exista

scanf("%ld",& n);


if (n%4==0)

{

printf("0\n");

k=n/4;


printf("%ld\n",k*2);

for (i=1;i<=k;++i)

printf ("%ld %ld ",i ,4*k-i+1);

printf ("\n");

printf("%ld\n",k*2);

for (i=k+1;i<=2*k;++i)

printf ("%ld %ld " ,i ,4*k-i+1);



}

if (n%4==3)

{

printf("0\n");

k=n/4;

printf("%ld\n",2*k+1);

printf("%ld ", 4*k+3);

for (i=1;i<=k;++i)

printf("%ld %ld ",i ,4*k+3-i);

printf("\n");

printf("%ld\n",2*k+2);

for (i=k+1;i<=2*k+1;++i)

printf("%ld %ld ",i ,4*k+3-i);



}

if (n%4==2)


{

k=n/4;

printf("1\n");


printf("%ld\n",k+1);

for (i=1;i<=k+1;++i)

printf("%ld ",4*k+3-i);


printf("\n");

printf("%ld\n",3*k+1);

for (i=k+2;i<=4*k+2;++i)

printf("%ld ",4*k+3-i);




}


if (n%4==1)

{

k=n/4;

printf("1\n");

printf("%ld\n",2*k);

for (i=2;i<=k+1;++i)

printf ("%ld %ld ", i , 4*k +3 -i );

printf("\n");

printf("%ld\n",2*k+1);

printf("1 ");

for (i=k+2;i<=3*k+1;++i)

printf("%ld ",i);


}


return 0;

}