Cod sursa(job #205543)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 1 septembrie 2008 18:31:15
Problema Multimi2 Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.57 kb
#include<stdio.h>
#define N 200005
int main(){
	int a1[N],v1[N],a2[N],v2[N];
	int n,i,r,q;
	freopen("multimi2.in","r",stdin);
	freopen("multimi2.out","w",stdout);
	scanf("%d",&n);
	r=1;
	q=1;
	if(n%4==0){
		printf("0\n");
		for(i=1;i<=n;i+=4){
			if(q>=N-5)
				a2[q++]=i;
			else
				a1[q++]=i;
			if(r>=N-5)
				v2[r++]=i+1;
			else
				v1[r++]=i+1;
			if(r>=N-5)
				v2[r++]=i+2;
			else
				v1[r++]=i+2;
			if(q>=N-5)
				a2[q++]=i+3;
			else
				a1[q++]=i+3;
		}
		printf("%d\n",q-1);
		for(i=1;i<q;++i)
			if(q<N-5)
				printf("%d ",a1[i]);
			else
				printf("%d ",a2[i]);
		printf("\n");
		printf("%d\n",r-1);
		for(i=1;i<r;++i)
			if(r<N-5)
				printf("%d ",v1[i]);
			else
				printf("%d ",v2[i]);
	}
	else
		if(n%4==1){
			printf("1\n");
			a1[q++]=1;
			for(i=2;i<=n;i+=4){
				if(q>=N-5)
					a2[q++]=i;
				else
					a1[q++]=i;
				if(r>=N-5)
					v2[r++]=i+1;
				else
					v1[r++]=i+1;
				if(r>=N-5)
					v2[r++]=i+2;
				else
					v1[r++]=i+2;
				if(q>=N-5)
					a2[q++]=i+3;
				else
					a1[q++]=i+3;
			}
		printf("%d\n",q-1);
		for(i=1;i<q;++i)
			if(q<N-5)
				printf("%d ",a1[i]);
			else
				printf("%d ",a2[i]);
		printf("\n");
		printf("%d\n",r-1);
		for(i=1;i<r;++i)
			if(r<N-5)
				printf("%d ",v1[i]);
			else
				printf("%d ",v2[i]);
	}
	else
		if(n%4==2){
			printf("1\n");
			a1[q++]=1;
			v1[r++]=2;
			for(i=3;i<=n;i+=4){
				if(q>=N-5)
					a2[q++]=i;
				else
					a1[q++]=i;
				if(r>=N-5)
					v2[r++]=i+1;
				else
					v1[r++]=i+1;
				if(r>=N-5)
					v2[r++]=i+2;
				else
					v1[r++]=i+2;
				if(q>=N-5)
					a2[q++]=i+3;
				else
					a1[q++]=i+3;
			}
		printf("%d\n",q-1);
		for(i=1;i<q;++i)
			if(q<N-5)
				printf("%d ",a1[i]);
			else
				printf("%d ",a2[i]);
		printf("\n");
		printf("%d\n",r-1);
		for(i=1;i<r;++i)
			if(r<N-5)
				printf("%d ",v1[i]);
			else
				printf("%d ",v2[i]);
	}
	else
		if(n%4==3){
			printf("0\n");
			a1[q++]=1;
			a1[q++]=2;
			v1[r++]=3;
			for(i=4;i<=n;i+=4){
				if(q>=N-5)
					a2[q++]=i;
				else
					a1[q++]=i;
				if(r>=N-5)
					v2[r++]=i+1;
				else
					v1[r++]=i+1;
				if(r>=N-5)
					v2[r++]=i+2;
				else
					v1[r++]=i+2;
				if(q>=N-5)
					a2[q++]=i+3;
				else
					a1[q++]=i+3;
			}
		printf("%d\n",q-1);
		for(i=1;i<q;++i)
			if(q<N-5)
				printf("%d ",a1[i]);
			else
				printf("%d ",a2[i]);
		printf("\n");
		printf("%d\n",r-1);
		for(i=1;i<r;++i)
			if(r<N-5)
				printf("%d ",v1[i]);
			else
				printf("%d ",v2[i]);
		}
	fclose(stdin);
	fclose(stdout);
	return 0;
}