Cod sursa(job #155515)

Utilizator MarcvsHdrMihai Leonte MarcvsHdr Data 11 martie 2008 23:14:44
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.6 kb
# include <stdio.h>

const long int MAXN=1000000;

long int n;
char v[MAXN+1];

void citire()
{
FILE *f=fopen("multimi2.in","r");
fscanf(f,"%ld",&n);
fcloseall();
}

int main()
{
citire();
FILE *g=fopen("multimi2.out","w");
long int i,j,ok;
if (n%4==0)
	{
	i=1;j=n;
	while (i<=j) {v[i]=v[j]=1;i+=2;j-=2;}
	fprintf(g,"0\n%ld\n",n/2);
	ok=0;
	for (i=1;i<=n;i++) if (v[i])
		{
		if (ok) fprintf(g," "); ok=1;
		fprintf(g,"%ld",i);
		}
	fprintf(g,"\n");
	fprintf(g,"%ld\n",n/2);
	ok=0;
	for (i=1;i<=n;i++) if (!v[i])
		{
		if (ok) fprintf(g," "); ok=1;
		fprintf(g,"%ld",i);
		}
	fprintf(g,"\n");
	}
if (n%4==3)
	{
	fprintf(g,"0\n%ld\n",(n-3)/2+2);
	fprintf(g,"1 2");
	i=4;j=n;
	while (i<=j)
		{
		v[i]=v[j]=1;
		i+=2;j-=2;
		}
	for (i=4;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	fprintf(g,"%ld\n",(n-3)/2+1);
	fprintf(g,"3");
	for (i=4;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	}
if (n%4==1)
	{
	fprintf(g,"1\n%ld\n",n/2+1);
	fprintf(g,"1");
	i=2;j=n;
	while (i<=j)
		{
		v[i]=v[j]=1;
		i+=2;j-=2;
		}
	for (i=2;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	fprintf(g,"%ld\n",n/2);
	fprintf(g,"3");
	for (i=4;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	}
if (n%4==2)
	{
	fprintf(g,"1\n%ld\n",n/2);
	fprintf(g,"1");
	i=3;j=n;
	while (i<=j)
		{
		v[i]=v[j]=1;
		i+=2;j-=2;
		}
	for (i=3;i<=n;i++) if (v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	fprintf(g,"%ld\n",n/2);
	fprintf(g,"2");
	for (i=3;i<=n;i++) if (!v[i]) fprintf(g," %ld",i);
	fprintf(g,"\n");
	}
fcloseall();
return 0;
}