Cod sursa(job #109432)

Utilizator toni2007Pripoae Teodor Anton toni2007 Data 25 noiembrie 2007 11:03:36
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 1.58 kb
#include<stdio.h>
int main(){
	int i,n;
	freopen("multimi2.in","r",stdin);
	freopen("multimi2.out","w",stdout);
	scanf("%d",&n);
	if(n==1){
		printf("1\n1\n1\n0\n");
		return 0;
	}
	if(n==2){
		printf("1\n1\n1\n1\n2\n");
		return 0;
	}
	if(n==3){
		printf("0\n2\n1 2\n1\n3\n");
		return 0;
	}
	if (n%4==0){
		printf("0\n");
		printf("%d\n",n/2);
		for (i=1;i<=n/4;++i)
			printf("%d ",i);
		for (i=3*n/4+1;i<n;++i)
			printf("%d ",i);
		printf("%d\n",n);
		printf("%d\n",n/2);
		for (i=n/4+1;i<3*n/4;++i)
			printf("%d ",i);
		printf("%d\n",3*n/4);
		return 0;
	}
	if (n%4==1){
		n-=1;
		printf("1\n");
		printf("%d\n",n/2+1);
		printf("1 ");
		for (i=1;i<=n/4;++i)
			printf("%d ",i+1);
		for (i=3*n/4+1;i<n;++i)
			printf("%d ",i+1);
		printf("%d\n",n+1);
		printf("%d\n",n/2);
		for (i=n/4+1;i<3*n/4;++i)
			printf("%d ",i+1);
		printf("%d\n",3*n/4+1);
		return 0;
	}
	if (n%4==2){
		n-=2;
		printf("1\n");
		printf("%d\n",n/2+1);
		printf("1 ");
		for (i=1;i<=n/4;++i)
			printf("%d ",i+2);
		for (i=3*n/4+1;i<n;++i)
			printf("%d ",i+2);
		printf("%d\n",n+2);
		printf("%d\n",n/2+1);
		printf("2 ");
		for (i=n/4+1;i<3*n/4;++i)
			printf("%d ",i+2);
		printf("%d\n",3*n/4+2);
		return 0;
	}
	if (n%4==3){
		n-=3;
		printf("0\n");
		printf("%d\n",n/2+2);
		printf("1 2 ");
		for (i=1;i<=n/4;++i)
			printf("%d ",i+3);
		for (i=3*n/4+1;i<n;++i)
			printf("%d ",i+3);
		printf("%d\n",n+3);
		printf("%d\n",n/2+1);
		printf("3 ");
		for (i=n/4+1;i<3*n/4;++i)
			printf("%d ",i+3);
		printf("%d\n",3*n/4+3);
		return 0;
	}
	return 0;
}