Cod sursa(job #109259)

Utilizator razvan2006razvan brezulianu razvan2006 Data 25 noiembrie 2007 09:46:38
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasele 5-8 Marime 2.03 kb
#include<stdio.h>

long i, j, n;
FILE *fin, *fout;

int main()
{
	fin = fopen("multimi2.in", "rt");
	fout = fopen("multimi2.out", "wt");

	fscanf(fin, "%ld", &n);

	if(n % 2 == 0)
	{
		if(n == 2)
			fprintf(fout, "1\n1\n1\n1\n2\n");
		else	
			if(n % 4 == 0)
			{	
				fprintf(fout, "0\n");
			
				i = 1;
				j = n;

				fprintf(fout, "%ld\n", n / 2);

				while(i <= n / 4)
				{
					fprintf(fout, "%ld %ld ", i, j);
						
					i++;
					j--;
				}

				fprintf(fout, "\n%ld\n", n / 2);
			
				while(i <= j)
				{
					fprintf(fout, "%ld %ld ", i, j);
			
					i++;
					j--;
				}
			}
			else
			{
				fprintf(fout, "1\n");
			
				i = 1;
				j = n;

				fprintf(fout, "%ld\n", n / 2);

				while(i <= n / 4)
				{
					fprintf(fout, "%ld %ld ", i, j);
						
					i++;
					j--;
				}
				
				fprintf(fout, "%ld\n", n / 2);

				fprintf(fout, "%ld\n", n / 2);
			
				while(i + 1 != j)
				{
					fprintf(fout, "%ld %ld ", i, j);
			
					i++;
					j--;
				}
			
				fprintf(fout, "%ld\n", n / 2 + 1);
			}
	}
	else
	{
		if(n == 3)
			fprintf(fout, "0\n1\n3\n2\n1 2\n");
		else	
			if((n - 1) % 4 == 0)
			{	
				fprintf(fout, "1\n");
			
				i = 2;
				j = n;

				fprintf(fout, "%ld\n", n / 2);

				while(i <= n / 4 + 1)
				{
					fprintf(fout, "%ld %ld ", i, j);
						
					i++;
					j--;
				}

				fprintf(fout, "\n%ld\n", n / 2 + 1);
			
				while(i <= j)
				{
					fprintf(fout, "%ld %ld ", i, j);
			
					i++;
					j--;
				}

				fprintf(fout, "1\n");
			}
			else
			{
				fprintf(fout, "0\n");
			
				i = 2;
				j = n;

				fprintf(fout, "%ld\n", n / 2 + 1);

				while(i <= n / 4 + 1)
				{
					fprintf(fout, "%ld %ld ", i, j);
						
					i++;
					j--;
				}
				
				fprintf(fout, "%ld 1\n", n / 2 + 1);

				fprintf(fout, "%ld\n", n / 2);
			
				while(i + 1 != j)
				{
					fprintf(fout, "%ld %ld ", i, j);
			
					i++;
					j--;
				}
			
				fprintf(fout, "%ld\n", n / 2 + 2);
			}
	}

	return 0;
}