Cod sursa(job #14285)

Utilizator Darth_NiculusIvan Nicolae Darth_Niculus Data 8 februarie 2007 17:36:10
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <stdio.h>

#define NMAX 1002

int i,j,n,m,A[NMAX];

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

 scanf("%d",&n);
 int N=n;

 int R=n % 12;

 for (i=2;i<=N;i+=2)
    A[++A[0]]=i;
 if (R==3 || R==9)
   {
    for (i=1;i<=A[0];i++)
       A[i]=A[i+1];
    A[A[0]]=2;
   }
 int p=A[0]+1;
 for (i=1;i<=N;i+=2)
    A[++A[0]]=i;
 if (R == 8)
   {
    for (i=p;i<=A[0];i+=2)
       {
        int x=A[i];
        A[i]=A[i+1];
        A[i+1]=x;
       }
   }
 if (R == 2)
   {
    A[p]=3; A[p+1]=1;
    for (i=p+2;i<=A[0];i++)
       A[i]=A[i+1];
    A[A[0]]=5;
   }
 if (R == 3 || R == 9)
   {
    for (i=p;i<=A[0];i++)
       A[i]=A[i+1];
    for (i=p;i<=A[0];i++)
       A[i]=A[i+1];
    A[A[0]]=3; A[A[0]-1]=1;
   }

 if (n >= 4)
   {
    printf("%d\n",n);
    for (i=1;i<=N;i++)
       printf("%d %d\n",i,A[i]);
   }
  else
 if (n == 1)
   {
    printf("1\n1 1\n");
   }
  else
 if (n == 2)
   {
    printf("1\n1 1\n");
   }
  else
 if (n == 3)
   {
    printf("2\n1 1\n3 2\n");
   }

 fclose(stdin);
 fclose(stdout);
 
 return 0;
}