Cod sursa(job #116221)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 17 decembrie 2007 23:09:14
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 2.53 kb
#include<stdio.h>
long n,i,j,l,c,nr,aux,k,x,y,min=1000001,a[31][31],sol[3][601];
char ch[601];
int main()
{
freopen("grozavesti.in","r",stdin);
freopen("grozavesti.out","w",stdout);            //a11 a12 a13 a14 a15 a16 a17
scanf("%ld",&n);                                 //a21 a22 a23 a24 a25 a26 a27
for(i=1;i<=n;i++)                                //a31 a32 a33 a34 a35 a36 a37
  for(j=1;j<=n;j++)                              //a41 a42 a43 a44 a45 a46 a47
    {                                            //a51 a52 a53 a54 a55 a56 a57
    scanf("%ld",&a[i][j]);                       //a61 a62 a63 a64 a65 a66 a67
    if(a[i][j]<min)                              //a71 a72 a73 a74 a75 a76 a77
      {
      l=i;
      c=j;
      min=a[i][j];
      }
    }
nr=1;
if(l==nr && c!=nr)
  {
  for(i=1;i<=n;i++)
    {
    aux=a[i][nr];
    a[i][nr]=a[i][c];
    a[i][c]=aux;
    }
  sol[1][++k]=nr;
  sol[2][k]=c;
  ch[k]='C';
  }
else
  if(l!=nr && c==nr)
    {
    for(j=1;j<=n;j++)
      {
      aux=a[nr][j];
      a[nr][j]=a[l][j];
      a[l][j]=aux;
      }
    sol[1][++k]=nr;
    sol[2][k]=l;
    ch[k]='L';
      }
  else
    if(l!=nr && c!=nr)
      {
      //coloana
      for(i=1;i<=n;i++)
	{
	aux=a[i][nr];
	a[i][nr]=a[i][c];
	a[i][c]=aux;
	}
      sol[1][++k]=nr;
      sol[2][k]=c;
      ch[k]='C';
      //linia
      for(j=1;j<=n;j++)
	{
	aux=a[nr][j];
	a[nr][j]=a[l][j];
	a[l][j]=aux;
	}
      sol[1][++k]=nr;
      sol[2][k]=l;
      ch[k]='L';
      }
    else
      nr++;

while(nr<=n)
  {
  min=1000001;
  for(x=nr;x<=n;x++)
    for(y=nr;y<=n;y++)
      if(a[x][x]<min)
	{
	l=x;
	c=y;
	min=a[x][y];
	}
  if(l==nr && c!=nr)
    {
    for(i=1;i<=n;i++)
      {
      aux=a[i][nr];
      a[i][nr]=a[i][c];
      a[i][c]=aux;
      }
    sol[1][++k]=nr;
    sol[2][k]=c;
    ch[k]='C';
    }
  else
    if(l!=nr && c==nr)
      {
      for(j=1;j<=n;j++)
	{
	aux=a[nr][j];
	a[nr][j]=a[l][j];
	a[l][j]=aux;
	}
      sol[1][++k]=nr;
      sol[2][k]=l;
      ch[k]='L';
      }
    else
      if(l!=nr && c!=nr)
	{
	//coloana
	for(i=1;i<=n;i++)
	  {
	  aux=a[i][nr];
	  a[i][nr]=a[i][c];
	  a[i][c]=aux;
	  }
	sol[1][++k]=nr;
	sol[2][k]=c;
	ch[k]='C';
	//linia
	for(j=1;j<=n;j++)
	  {
	  aux=a[nr][j];
	  a[nr][j]=a[l][j];
	  a[l][j]=aux;
	  }
	sol[1][++k]=nr;
	sol[2][k]=l;
	ch[k]='L';
	}
      else
	nr++;
  }
printf("%ld\n",k);
if(k)
  for(i=1;i<=k;i++)
    printf("%c %ld %ld\n",ch[i],sol[1][i],sol[2][i]);
else
  printf("0");
return 0;
}