Cod sursa(job #313095)

Utilizator DraStiKDragos Oprica DraStiK Data 7 mai 2009 22:29:42
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <stdio.h>
#define DIM 1005
int a[DIM];
int n,nr;
int main ()
{
    freopen ("dame.in","r",stdin);
    freopen ("dame.out","w",stdout);
    int i;
    scanf ("%d",&n);
    for (i=2; i<=n; i+=2)
        a[++nr]=i;
    if (n%12==3 || n%12==9)
    {
        for (i=1; i<nr; ++i)
            a[i]=a[i+1];
        a[nr]=2;
    }
    for (i=1; i<=n; i+=2)
        a[++nr]=i;
    if (n%12==8)
        for (i=nr; a[i]%2==1; i-=2)
            a[i]^=a[i-1]^=a[i]^=a[i-1];
    if (n%12==2)
    {
        for (i=1; i<=nr; ++i)
            if (a[i]==3 || a[i]==1)
            {
                a[i]^=a[i+1]^=a[i]^=a[i+1];
                break;
            }
        for (i+=2 ; i<nr; ++i)
            a[i]=a[i+1];
        a[nr]=5;
    }
    if (n%12==3 || n%12==9)
    {
        for (i=1; i<=nr; ++i)
            if (a[i]==3 || a[i]==1)
                break;
        for ( ; i<nr-1; ++i)
            a[i]=a[i+2];
        a[nr-1]=1;
        a[nr]=3;
    }
    if (n==2)
        printf ("1\n1 1\n");
    else if (n==3)
        printf ("2\n1 1\n3 2\n");
    else
    {
        printf ("%d\n",n);
        for (i=1; i<=n; ++i)
            printf ("%d %d\n",i,a[i]);
    }
    return 0;
}