Cod sursa(job #106424)

Utilizator DITzoneCAdrian Diaconu DITzoneC Data 18 noiembrie 2007 17:01:30
Problema Multimi2 Scor Ascuns
Compilator cpp Status done
Runda Marime 0.72 kb
#include <stdio.h>
#include <assert.h>

#define nmax 1000111
#define FOR(i,s,d) for(i=(s);i<(d);++i)

int n;

void doit(int sol,int a,int b,int c,int n1)
{
	int i;
	printf("%d\n%d\n",sol,n1);
	if(c>1) printf("1 ");
	if(c==4) printf("2 ");
	FOR(i,c,n+1)
		if(i%4==a||i%4==b)
			printf("%d ",i);
	printf("\n%d\n",n-n1);
	if(c==3) printf("2 ");
	if(c==4) printf("3 ");
	FOR(i,c,n+1)
		if(!(i%4==a||i%4==b))
			printf("%d ",i);
	printf("\n");
}

int main()
{
	assert(freopen("multimi2.in","r",stdin));
	freopen("multimi2.out","w",stdout);
	assert(scanf("%d",&n)==1);
	assert(n<=1000000);
	assert(n>=1);
	if(n%4==0) doit(0,1,0,1,n/2);
	if(n%4==1) doit(1,2,1,2,n/2+1);
	if(n%4==2) doit(1,3,2,3,n/2);
	if(n%4==3) doit(0,0,3,4,n/2+1);
	return 0;
}