Cod sursa(job #328242)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 1 iulie 2009 13:39:49
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include<stdio.h>

int a[1002];
int n,i,q;

int main()
{
	freopen("dame.in","r",stdin);
	freopen("dame.out","w",stdout);
	scanf("%ld",&n);
	a[0]=n >> 1;
	for (i=1; i<=a[0]; i++)
		a[i]=i << 1;
	if ((n % 12 == 3) || (n % 12 == 9))
	{
		for (i=1; i<a[0]; i++)
			a[i]=a[i+1];
		a[a[0]]=2;
	}
	int mij=a[0];
	i=1;
	while (i<=n)
	{
		a[0]++;
		a[a[0]]=i;
		i+=2;
	}
	if (n % 12 == 8)
	{
		for (i=mij+1; i<=n; i++)
			if (( i - mij ) % 2 == 1)
			{
				q=a[i]; a[i]=a[i+1]; a[i+1]=q;
			}
	}
	if (n % 12 == 2)
	{
		a[mij+1]=3; a[mij+2]=1;
		for (i=mij+3; i<=n; i++)
			a[i]=a[i+1];
		a[n]=5;
	}
	if ((n % 12 == 3 ) || (n % 12 == 9))
	{
		for (i=mij+1; i<=n-2; i++)
			a[i]=a[i+2];
		a[n-1]=1;
		a[n]=3;
	}
	if (n<=2) printf("1\n1 1\n");
	if (n==3) printf("2\n1 1\n3 2\n");
	if (n>3)
	{
		printf("%ld\n",n);
		for (i=1; i<=n; i++)
			printf("%ld %ld\n",i,a[i]);
	}
	fclose(stdin); fclose(stdout);
	return 0;
}