Cod sursa(job #483651)

Utilizator avram_florinavram florin constantin avram_florin Data 9 septembrie 2010 16:10:00
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.16 kb
#include<fstream>
#include<algorithm>

using namespace std;

ifstream f ("dame.in");
ofstream g ("dame.out");

const int MaxN = 1 << 10;

int N,v[MaxN];

void solve()
{
	int i,dim,rest = N % 12;
	dim = 0;
	for( i = 1 ; i << 1 <= N ; i++)
		v[++dim] = i << 1;
	if( rest == 3 || rest == 9)
		{
			dim = 0;
			for( i = 2 ; i << 1 <= N ; i++)
				v[++dim] = i << 1;
			v[++dim] = 2;
		}
	int nr = dim;
	for( i = 1 ; i <= N ; i+= 2 )
		v[++dim] = i;
	if( rest == 8)
		{
			for( i = nr + 1 ; i <= dim ; i+= 2)
				swap(v[i],v[i+1]);
		}
	if( rest == 2)
		{
			dim = nr;
			v[++dim] = 3;
			v[++dim] = 1;
			for( i = 7 ; i <= N ; i += 2)
				v[++dim] = i;
			v[++dim] = 5;
		}
	if( rest == 3 || rest == 9 )
		{
			dim = nr ;
			for( i = 5 ; i <= N ; i += 2)
				v[++dim] = i;
			v[++dim] = 1;
			v[++dim] = 3;
		}
}

void print()
{
	int i;
	if( N == 1 || N == 2)
		g << "1\n1 1\n";
		else
		if(N == 3)
			g << "2\n1 1\n2 3\n";
			else
			{
				g << N << '\n';
				for( i = 1 ; i <= N ; i++)
					g << i << ' ' << v[i] << '\n';
			}
}

int main ()
{
	f >> N ;
	solve();
	print();
	f.close();
	g.close();
	return 0;
}