Cod sursa(job #301197)

Utilizator bacerandreiBacer Andrei bacerandrei Data 7 aprilie 2009 23:43:12
Problema Dame Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.62 kb
#include<fstream.h>

int n, a[1010], k, i, poz, aux, j, poz1, poz2;


int main()
{
  ifstream f("dame.in");
  ofstream g("dame.out");
   f>>n;
  f.close();
  if(n == 2)
   {
     g<<"1"<<"\n";
     g<<"1 1";
   }
  else
   if(n == 3)
    {
      g<<"2"<<"\n";
      g<<"1 1"<<"\n";
      g<<"2 3";
    }
  else
  {
   i = 2;
    while(i <= n)
     {
       k++;
       a[k] = i;
       i += 2;
     }
   if(n%12 == 3 || n%12 == 9)
   {
     for(i = 1 ; i <= k-1 ; i++)
       a[i] = a[i+1];
   a[k] = 2;
  }
    i = 1;
     while(i <= n)
      {
	k++;
	a[k] = i;
	i += 2;
      }
    if(n%12 == 8)
     {
       for(i = 1 ; i <= k ; i++)
	 if(a[i]%2 == 1)
	 {
	  poz = i;
	  i = k+1;
	 }
       while(a[poz]%2 == 1)
	{
	  aux = a[poz];
	  a[poz] = a[poz+1];
	  a[poz+1] = aux;
	  poz = poz+2;
	}
    }
   else
     if(n%12 == 3 || n%12 == 9)
      {
	for(i = 1; i <= n; i++)
	  if(a[i] == 1)
	    {
	      for(j = i; j < k ; j++)
	       a[j] = a[j+1];
	      a[k] = 1;
	    }
       for(i = 1; i <= k; i++)
	  if(a[i] == 3)
	    {
	      for(j = i; j < k ; j++)
	       a[j] = a[j+1];
	      a[k] = 3;
	    }
      }
   else
     if(n%12 == 2)
      {
	for(i = 1 ; i <= k ; i++)
	  if(a[i] == 1)
	    poz1 = i;
	else
	  if(a[i] == 3)
	    poz2 = i;
	aux=a[poz1];
	a[poz1] = a[poz2];
	a[poz2] = aux;
	 for(i = 1 ; i <= k ; i++)
	   if(a[i] == 5)
	    {
	      for(j = i ; j < k ; j++)
		a[j] = a[j+1];
	      a[k] = 5;
	    }
      }
   g<<k<<"\n";
    for(i = 1 ; i <= k ; i++)
     g<<i<<" "<<a[i]<<"\n";
   }
  f.close();
  g.close();
  return 0;
}