Cod sursa(job #109377)

Utilizator ioraIoana Radu iora Data 25 noiembrie 2007 10:36:06
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.43 kb
#include<stdio.h>
long nr1,nr2,n,c,r;
int main()
{
	freopen("multimi2.in","r",stdin);
	freopen("multimi2.out","w",stdout);

	scanf("%ld",&n);
	r=n&3;
	if(r==0||r==3) printf("0\n");
	else printf("1\n");

	if(r==0)
	{
		nr1=n>>1;
		nr2=n>>1;
		printf("%ld\n",nr1);
		c=n;
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) --c;
				else c-=3;
			}
		c=n-1;
		printf("\n%ld\n",nr2);
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) --c;
				else c-=3;
			}
	}
	else
	if(r==1)
	{
		nr1=(n>>1)+1;
		nr2=n>>1;
	 printf("%ld\n",nr1);
	 c=n;
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) c=c-3;
				else --c;
			}
		c=n-1;
		printf("\n%ld\n",nr2);
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) c=c-3;
				else --c;
			}
		}
		else
			if(r==2)
				{
					nr1=nr2=n>>1;
					printf("%ld\n",nr1);
					 c=n;
					while(c>0)
					{
					printf("%ld ",c);
					if(!(c&1)) c=c-3;
					else --c;
					}
					c=n-1;
					printf("\n%ld\n",nr2);
					while(c>0)
						{
							printf("%ld ",c);
							if(!(c&1)) c=c-3;
							else --c;
						}
				}
				else
				if(r==3)
				 {
					nr1=n>>1;
				 nr2=(n>>1)+1;
	 printf("%ld\n",nr1);
	 c=n;
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) c=c-3;
				else --c;
			}
		c=n-1;
		printf("\n%ld\n",nr2);
		while(c>0)
			{
				printf("%ld ",c);
				if(c&1) c=c-3;
				else --c;
			}
		}
	fcloseall();
	return 0;
}