Cod sursa(job #471583)

Utilizator darrenRares Buhai darren Data 19 iulie 2010 16:15:04
Problema Multimi2 Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.59 kb
#include <fstream>

using namespace std;

const int SIZE = 1000001;

ifstream fin("multimi2.in");
ofstream fout("multimi2.out");

void Read();
void Solve();
void Write();

int n;
int dif, a[SIZE], b[SIZE];

int main()
{
	Read();
	Solve();
	Write();
}

void Read()
{
	fin >> n;
}

void Solve()
{
	if (n % 4 == 0)
	{
		dif = 0;
		for (int i = 1, aux = 0; n - aux > i; i += 2, aux += 2)
			a[++a[0]] = i, a[++a[0]] = n - aux;
		for (int i = 2, aux = 1; n - aux > i; i += 2, aux += 2)
			b[++b[0]] = i, b[++b[0]] = n - aux;
	}
	if (n % 4 == 1)
	{
		dif = 1;
		a[++a[0]] = 1;
		for (int i = 2, aux = 0; n - aux > i; i += 2, aux += 2)
			a[++a[0]] = i, a[++a[0]] = n - aux;
		for (int i = 3, aux = 1; n - aux > i; i += 2, aux += 2)
			b[++b[0]] = i, b[++b[0]] = n - aux;
	}
	if (n % 4 == 2)
	{
		dif = 1;
		a[++a[0]] = 1;
		b[++b[0]] = 2;
		for (int i = 3, aux = 0; n - aux > i; i += 2, aux += 2)
			a[++a[0]] = i, a[++a[0]] = n - aux;
		for (int i = 4, aux = 1; n - aux > i; i += 2, aux += 2)
			b[++b[0]] = i, b[++b[0]] = n - aux;
	}
	if (n % 4 == 3)
	{
		dif = 0;
		a[++a[0]] = 1, a[++a[0]] = 2;
		b[++b[0]] = 3;
		for (int i = 4, aux = 0; n - aux > i; i += 2, aux += 2)
			a[++a[0]] = i, a[++a[0]] = n - aux;
		for (int i = 5, aux = 1; n - aux > i; i += 2, aux += 2)
			b[++b[0]] = i, b[++b[0]] = n - aux;
	}
}

void Write()
{
	fout << dif << '\n';
	
	fout << a[0] << '\n';
	for (int i = 1; i <= a[0]; ++i)
		fout << a[i] << ' ';
	fout << '\n';
	
	fout << b[0] << '\n';
	for (int i = 1; i <= b[0]; ++i)
		fout << b[i] << ' ';
	fout << '\n';
}