Cod sursa(job #109423)

Utilizator savimSerban Andrei Stan savim Data 25 noiembrie 2007 11:01:53
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.57 kb
#include <stdio.h>
int main()
{
	int i,n,k,p,q;
	freopen("multimi2.in","r",stdin);
	freopen("multimi2.out","w",stdout);
    scanf("%d",&n);
    if (n%4==0)        
    {
       k=n/4;
       p=n/2;
       printf("0\n");
       printf("%d\n",p);                   
	   for (i=1; i<=k; i++)
		   printf("%d %d ",i,n-i+1);
	   printf("\n");
	   printf("%d\n",p);
	   for (i=k+1; i<=2*k; i++)
		   printf("%d %d ",i,n-i+1);
	   printf("\n");
	}
    if (n%4==1)
    {
       k=(n-1)/4;
       p=(n-1)/2;
       printf("1\n");
       printf("%d\n",p+1);                   
       printf("1 ");
	   q=-1;
	   for (i=2; i<=k+1; i++)
	   {
		   q++;
		   printf("%d %d ",i,n-q);
	   }
	   printf("\n");
	   printf("%d\n",p);
	   for (i=k+2; i<=2*k+1; i++)
	   {
		   q++;
		   printf("%d %d ",i,n-q);
	   }
	   printf("\n");
	}
    if (n%4==2)
    {
       k=(n-2)/4;
       p=n/2;
       printf("1\n");
	   printf("%d\n",p);
	   printf("1 ");
	   q=-1;
	   for (i=3; i<=k+2; i++)
	   {
		   q++;
		   printf("%d %d ",i,n-q);
	   }
	   printf("\n");
	   printf("%d\n",p);
	   printf("2 ");
	   for (i=k+3; i<=2*k+2; i++)
	   {
		   q++;
		   printf("%d %d ",i,n-q);
	   }
	   printf("\n");
	}
	if (n%4==3)
	{
		k=(n-3)/4;
		p=(n-3)/2;
		printf("0\n");
		printf("%d\n",p+2);
		printf("1 2 ");
		q=-1;
		for (i=4; i<=k+3; i++)
		{
			q++;
			printf("%d %d ",i,n-q);
		}
		printf("\n");
		printf("%d\n",p+1);
		printf("3 ");
		for (i=k+4; i<=2*k+3; i++)
		{
			q++;
			printf("%d %d ",i,n-q);
		}
		printf("\n");
	}
	return 0;
}