Cod sursa(job #483643)

Utilizator avram_florinavram florin constantin avram_florin Data 9 septembrie 2010 15:56:04
Problema Dame Scor 50
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 = 1001;

int N,dim,v[MaxN];

void solve()
{
	int i,x;
	if(( N % 12 == 3)||(N % 12 == 9))
		{
			for( i = 2 ; i << 1 < N ; i++ )
				v[i-1] = i << 1;
			v[i-1] = 2;
		}	
		else
		for( i = 1 ; i << 1 <= N ; i++ )
				v[i] = i << 1 ;
	dim = i - 1;
	if( N % 12 == 8)
		{
			x = 3;
			for( i = dim + 1 ; i < N ; i += 2)
				v[i] = x, v[i+1] = x - 2 , x += 4;
		}
		else
		if( N % 12 == 2)
			{
				v[++dim] = 3; v[++dim] = 1;
				x = 7;
				for(i = dim + 1 ; i < N ; i++ )
					v[i] = x , x += 2;
				v[N] = 5;
			}
			else
			if(( N % 12 == 3)||(N % 12 == 9))
				{
					x = 5;
					for( i = dim + 1 ; i <= N - 2 ; i++)
						v[i] = x , x += 2;
					v[N - 1]= 1; v[N] = 3;
				}
	dim = N;
}

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