Cod sursa(job #128793)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 27 ianuarie 2008 20:46:31
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <fstream.h>

ifstream fin("grozavesti.in");
ofstream fout("grozavesti.out");

int a[300][300],n;
int sir[100000][4],minim=-123,l,c,nr=0;

void citire()
{
   fin>>n;
      for (int i=0;i<n;i++)
	for (int j=0;j<n;j++)
	    fin>>a[i][j];
      fin.close();
}

int mini(int x)
{
   int min=60341;
     for (int i=x;i<n;i++)
       for (int j=x;j<n;j++)
	  if (a[i][j]<min)
	  {
	     min=a[i][j];
	     l=i+1;
	     c=j+1;
	  }
   return min;
}

void matrice (int i)
{
  if (i==n)
     return  ;
  mini(i);
  if (l-1!=i)
  {
      for (int k=0;k<n;k++)
      {
       int aux=a[l-1][k];
       a[l-1][k]=a[i][k];
       a[i][k]=aux;
      }
      sir[nr][0]=l;
      sir[nr][1]=i+1;
      sir[nr][2]=1;
      nr++;
  }

  if (c-1!=i)
  {
       for (int l=0;l<n;l++)
       {
	  int aux=a[l][i];
	  a[l][i]=a[l][c-1];
	  a[l][c-1]=aux;
       }
       sir[nr][0]=c;
       sir[nr][1]=i+1;
       sir[nr][2]=2;
       nr++;
  }
  matrice (i+1);

}

int main()
{
   citire();
   matrice(0);
   fout<<nr<<"\n";
   for (int i=0;i<nr;i++)
   {
      if (sir[i][2]==1)
	 fout<<"L ";
      else
	 fout<<"C ";
      fout<<sir[i][0]<<" "<<sir[i][1]<<"\n";
   }
   fin.close();
   fout.close();
   return 0;
}