Cod sursa(job #81475)

Utilizator ScrazyRobert Szasz Scrazy Data 2 septembrie 2007 17:25:04
Problema Dame Scor 85
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <stdio.h>
#define NMAX 1100

int n, a[NMAX], x, i, db, j, aux;

int main()
{
    freopen("dame.in","r",stdin);
    freopen("dame.out","w",stdout);
    scanf("%d", &n);
    db=0;
    if (n==1)
    {
	printf("1\n");
	printf("1 1\n");
    }
    else if (n==2)
    {
	printf("1\n");
	printf("1 1\n");
    }
    else if (n==3)
    {
	printf("2\n");
	printf("1 1\n");
	printf("3 2");
    }
    else
    { 
	x=n%12;
	
	if (x==3 || x==9)
	{
	    for (i=4; i<=n; i+=2)
		a[++db]=i;
	    a[++db]=2;
	    for (i=5; i<=n; i+=2)
		a[++db]=i;
	    a[++db]=1;
	    a[++db]=3;
	}
	else if (x==8)
	{
	    for (i=2; i<=n; i+=2)
		a[++db]=i;
	    j=0;
	    
	    
	    
	    
	    for (i=1; i<=n; i+=2)
	    {
		++j;
		a[++db]=i;
		if (j & 1)
		{
		    aux=a[db];
		    a[db]=a[db-1];
		    a[db-1]=aux;
		}
	    }
	}
	else if (x==2)
	{
	    for (i=2; i<=n; i+=2)
		a[++db]=i;

	    a[++db]=3;
	    a[++db]=1;
	    for (i=7; i<=n; i+=2)
		a[++db]=i;
	    a[++db]=5;
	}
	else
	{
	    for (i=2; i<=n; i+=2)
		a[++db]=i;
	    for (i=1; i<=n; i+=2)
		a[++db]=i;
	}

	
	printf("%d\n", n);
	for (i=1; i<=db; ++i) 
	    printf("%d %d\n", a[i], i);

    }

    fclose(stdin);
    fclose(stdout);

    return 0;
}