Cod sursa(job #530630)

Utilizator nautilusCohal Alexandru nautilus Data 8 februarie 2011 09:35:14
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include<fstream>
#define dmax 310
#define inf 1000010
using namespace std;

typedef struct elem
{
 int v,p;
} elem;

elem e[dmax];
int n;
int a[dmax][dmax];
int mut;
int sol[dmax*2][5];


void citire()
{
 int i,j;
	
 ifstream fin("grozavesti.in");
 
 fin>>n;
 for (i=1; i<=n; i++)
	 for (j=1; j<=n; j++)
		 {
		  fin>>a[i][j];
		  
		  if (i==j)
			  {
			   e[i].v = a[i][j];
			   e[i].p = i;
			  }
		 }

 fin.close();
}


void solve()
{
 int i,j,poz1,poz2,min;
	
 for (i=1; i<=n-1; i++)
	 {
	  min = inf;
		 
	  for (j=i; j<=n; j++)
		  if (e[j].v < min)
			  {		
			   min = e[j].v;
			   poz1 = e[j].p;
			   poz2 = j;
			  }
	 
	  if (poz1 != i)
		  {
		   mut++;
		   sol[mut][1] = 1;
		   sol[mut][2] = i;
		   sol[mut][3] = poz1;
		   mut++;
		   sol[mut][1] = 2;
		   sol[mut][2] = i;
		   sol[mut][3] = poz1;
		   
		   swap(e[i].v, e[poz2].v);
		  }
	 }
}


void afisare()
{
 int i;
	
 ofstream fout("grozavesti.out");
 
 fout<<mut<<'\n';
 for (i=1; i<=mut; i++)
	 {
	  if (sol[i][1] == 1)
		  fout<<"L "; else
		  fout<<"C ";
	  fout<<sol[i][2]<<" "<<sol[i][3]<<'\n';
	 }
 
 fout.close();
}


int main()
{
	
 citire();
 solve();
 afisare();
	
 return 0;
}