Cod sursa(job #109993)

Utilizator FlorianFlorian Marcu Florian Data 25 noiembrie 2007 15:24:52
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<stdio.h>
FILE*f=fopen("multimi2.in","r");
FILE*g=fopen("multimi2.out","w");
long n;
void solve(long p, long k)
	{
	long s,i,x=0,nr1=0,nr2=0,y=0,z=0,ok=3,pp=0;
	switch(p)
		{
		case 1: fprintf(g,"0\n"); ok=2; break;
		case 2: fprintf(g,"1\n"); y=1; ok=3; nr1++; break;
		case 3: fprintf(g,"1\n"); x=2;nr1++;ok=3; nr2++; x=1; y=2; break;
		case 4: fprintf(g,"0\n"); x=3; y=1;pp=1; z=2; ok=4; nr1+=2; nr2++; break;
		}


	fprintf(g,"%ld\n",nr1+(k-p+1)/2);
	if(y)fprintf(g,"%ld ",y);
	if(z) fprintf(g,"%ld ",z);

	for(i=p;i<=k/2+pp;i=i+2)
		fprintf(g,"%ld ",i);

	for(i=k/2+ok;i<=k;i=i+2)
		fprintf(g,"%ld ",i);
	fprintf(g,"\n%ld\n",nr2+(k-p+1)/2);
	if(x) fprintf(g,"%ld ",x);
	for(i=p+1;i<=(k+p)/2;i=i+2)
		fprintf(g,"%ld ",i);
	for(i=(k+p)/2+1;i<=k;i=i+2)
		fprintf(g,"%ld ",i);
	}
int main()
	{
	fscanf(f,"%ld",&n);
	switch(n%4)
		{
		case 0: solve(1,n); break;
		case 1: solve(2,n);      break;
		case 2: solve(3,n);            break;
		case 3: solve(4,n);                  break;
		}
	return 0;
	}