Cod sursa(job #34869)

Utilizator VmanDuta Vlad Vman Data 21 martie 2007 16:17:22
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <stdio.h>
#include <stdlib.h>

#define Nmax 1000

int N,coada[Nmax+10],st,dr,i,impar,aux;

int main()
{
freopen("dame.in","r",stdin);
scanf("%d",&N);
fclose(stdin);
freopen("dame.out","w",stdout);
if ((N==2)||(N==3))
   {
   printf("%d\n",N-1);
   if (N==2) printf("%d %d",1,1);
      else printf("%d %d\n%d %d",1,1,2,3);
   fclose(stdout);
   exit(0);
   }
	else printf("%d\n",N);
st=1;
for (i=2;i<=N;i+=2)
	coada[++dr]=i;
if ((N%12==3)||(N%12==9))
	{
	++st;
	coada[++dr]=2;
	}
impar=dr+1;
for (i=1;i<=N;i+=2)
	coada[++dr]=i;
if (N%12==8)
	{
	for (i=impar;i<=dr;i+=2)
		{
		aux=coada[i];
		coada[i]=coada[i+1];
		coada[i+1]=aux;
		}
	}
if (N%12==2)
	{
	aux=coada[impar];
	coada[impar]=coada[impar+1];
	coada[impar+1]=aux;
	for (i=impar+2;i<=dr-1;++i)
		coada[i]=coada[i+1];
	coada[dr]=5;
	}
if ((N%12==3)||(N%12==9))
	{
	for (i=impar;i<=dr-2;++i)
		coada[i]=coada[i+2];
	coada[dr-1]=1;
	coada[dr]=3;
	}
for (i=st;i<=dr;++i)
	printf("%d %d\n",i-st+1,coada[i]);
fclose(stdout);
return 0;
}