Cod sursa(job #471582)

Utilizator darrenRares Buhai darren Data 19 iulie 2010 16:09:13
Problema Multimi2 Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.41 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; n - i > i; i += 2)
			a[++a[0]] = i, a[++a[0]] = n - i;
		for (int i = 2; n - i > i; i += 2)
			b[++b[0]] = i, b[++b[0]] = n - i;
	}
	if (n % 4 == 1)
	{
		dif = 1;
		a[++a[0]] = 1;
		for (int i = 2; n - i > i; i += 2)
			a[++a[0]] = i, a[++a[0]] = n - i;
		for (int i = 3; n - i > i; i += 2)
			b[++b[0]] = i, b[++b[0]] = n - i;
	}
	if (n % 4 == 2)
	{
		dif = 1;
		a[++a[0]] = 1;
		b[++b[0]] = 2;
		for (int i = 3; n - i > i; i += 2)
			a[++a[0]] = i, a[++a[0]] = n - i;
		for (int i = 4; n - i > i; i += 2)
			b[++b[0]] = i, b[++b[0]] = n - i;
	}
	if (n % 4 == 3)
	{
		dif = 0;
		a[++a[0]] = 1, a[++a[0]] = 2;
		b[++b[0]] = 3;
		for (int i = 4; n - i > i; i += 2)
			a[++a[0]] = i, a[++a[0]] = n - i;
		for (int i = 5; n - i > i; i += 2)
			b[++b[0]] = i, b[++b[0]] = n - i;
	}
}

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';
}