Cod sursa(job #345320)

Utilizator indestructiblecont de teste indestructible Data 2 septembrie 2009 16:06:47
Problema Dame Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include <stdio.h>
#define N 1005
int n,col[N],r;
void schimba(int poz1,int poz2)
{
	int temp;
	temp=col[poz1];
	col[poz1]=col[poz2];
	col[poz2]=temp;
}
void muta(int poz)
{
	col[++r]=col[poz];
	int i;
	for (i=poz+1; i<=r; i++)
		col[i-1]=col[i];
	r--;
}
void rezolva()
{
	int i;
	for (i=2; i<=n; i+=2)
		col[++r]=i;
	if (n%12==3 || n%12==9)
		muta(1);
	for (i=1; i<=n; i+=2)
		col[++r]=i;
	if (n%12==8)
	{
		schimba(r/2+1,r/2+2);
		schimba(r/2+3,r/2+4);
	}
	if (n%12==2)
	{
		schimba(r/2+1,r/2+2);
		muta(r/2+3);
	}
	if (n%12==3 || n%12==9)
	{
		muta(r/2+1);
		muta(r/2+1);
	}
}
void show()
{
	int i,rez;
	if (n==2 || n==3)
	{
		rez=n-1;
		printf("%d\n",n-1);
	}
	else
	{
		rez=n;
		printf("%d\n",n);
	}
	if (n==3)
		printf("1 2\n3 1\n");
	else
		for (i=1; i<=rez; i++)
			printf("%d %d\n",i,col[i]);
}
int main()
{
	freopen("dame.in","r",stdin);
	freopen("dame.out","w",stdout);
	scanf("%d",&n);
	rezolva();
	show();
	return 0;
}