Cod sursa(job #381568)

Utilizator blasterzMircea Dima blasterz Data 10 ianuarie 2010 23:13:25
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <cstdio>
#include <algorithm>
#define N 1024

using namespace std;

int a[N];
int n;

int main()
{
	freopen("dame.in","r",stdin);

	scanf("%d", &n);
	
	int r = n % 12;
	
	int i, j;
	int nr = 0;
	
	for(i = 2; i <= n; i += 2)
		a[++nr] = i;
	
	if(r == 3 || r == 9)
	{
		nr = 0;
	// mut pe 2 la sfarsitul listei
		for(i = 4; i <= n; i += 2)
			a[++nr] = i;
		a[++nr] = 2;
	}
	
	int old = nr;
	for(i = 1; i <= n; i += 2)
		a[++nr] = i;
	
	if(r == 8)
	{
		for(i = old + 1; i <= nr; i += 2)
			swap(a[i], a[i+1]);
	}
	
	if(r == 2)
	{//interschimb 1 cu 3 si mut pe 5 la sf
		nr = old;
		
		a[++nr] = 3;
		a[++nr] = 1;
		for(i = 7; i <= n; i += 2)
			a[++nr] = i;
		
		a[++nr] = 5;
	}
	
	if(r == 3 || r == 9)
	{
		nr = old;
		for(i = 5; i <= n; i += 2)
			a[++nr] = i;
		a[++nr] = 1;
		a[++nr] = 3;
	}

	freopen("dame.out","w",stdout);
	if(n == 1)
	{
		printf("1\n");
		printf("1 1\n");
		return 0;
	}
	if(n == 2)
	{
		printf("1\n");
		printf("1 1\n");
		return 0;
	}
	
	if(n == 3)
	{
		printf("2\n");
		printf("1 1\n");
		printf("2 3\n");
		return 0;
	}
	
	printf("%d\n", n);
	
	for(i = 1; i <= n; ++i)
		printf("%d %d\n", i, a[i]);
	
	return 0;
}