Cod sursa(job #68888)

Utilizator gabitzish1Gabriel Bitis gabitzish1 Data 29 iunie 2007 18:50:03
Problema Dame Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.08 kb
#include<stdio.h>


int n, v[1003], nr;

int main()
{
  int i, j;
  i=2;
  freopen("dame.in","r",stdin);
  freopen("dame.out","w",stdout);
  scanf ("%d",&n);
  if (n%12==3 || n%12==9) i=4;
  while (i<=n)
     { v[++nr]=i; i+=2;}
  if (v[1]==4) v[++nr]=2;
   	
  i=1; j=3;
  if (n%12==8)
     { while (i<=n && j<=n){	v[++nr]=j; v[++nr]=i; i+=4; j+=4; }	
	if (n-v[nr]>=2) v[++nr]=v[nr-1]+2;}
    else if (n%12==2)
	   { v[++nr]=3; v[++nr]=1;i=5; j=7;
	      while(i<=n && j<=n ) { v[++nr]=i; v[++nr]=j; i+=4; j+=4;}
	     if (n-v[nr]>=2) v[++nr]=5;
		else v[nr]=5;
           }
      else if (n%12==3)
	     { i=5; j=7;
	      while(i<=n && j<=n ) { v[++nr]=i; v[++nr]=j; i+=4; j+=4;}	
		if (n-v[nr]>=2) { v[nr]=1; v[++nr]=3;}
	      else { v[++nr]=1; v[++nr]=3;}
             }
	  else { i=1; j=3;
		 while (i<=n && j<=n) {v[++nr]=i; v[++nr]=j; i+=4; j+=4;}
		  if (n-v[nr]>=2) v[++nr]=v[nr-1]+2;}
   if (n==2) n--;
    v[1]=1;
  if (n==3) n--;
    { v[1]=2; v[2]=3;}

  printf("%d\n",n);
  for (i=1; i<=n; i++)
    printf("%d %d\n",i,v[i]);
  return 0;
}