Cod sursa(job #610613)

Utilizator scipianusFMI Ciprian Olariu scipianus Data 28 august 2011 12:12:37
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include<fstream>
#include<vector>
using namespace std;
int n,A[305][305];
struct Solutie{char c;int x,y;};
vector <Solutie> sol;

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];
	fin.close();
}

void InterschimbaLinie(int x,int y)
{
	int k;
	for(k=1;k<=n;k++)
		swap(A[x][k],A[y][k]);
}

void InterschimbaColoana(int x,int y)
{
	int k;
	for(k=1;k<=n;k++)
		swap(A[k][x],A[k][y]);
}


void Rezolvare()
{
	int i,k,minim,poz;
	Solutie s;
	for(k=1;k<=n;k++)
	{
		minim=A[k][k];
		poz=k;
		for(i=k;i<=n;i++)
		{
			if(A[i][i]<minim)
			{
				minim=A[i][i];
				poz=i;
			}
		}
		if(poz!=k)
		{
			s.c='C'; s.x=k; s.y=poz; sol.push_back(s);
			s.c='L'; sol.push_back(s);
			InterschimbaColoana(k,poz);
			InterschimbaLinie(k,poz);
		}
	}
}

void Afisare()
{
	unsigned i;
	ofstream fout("grozavesti.out");
	fout<<sol.size()<<"\n";
	for(i=0;i<sol.size();i++)
		fout<<sol[i].c<<' '<<sol[i].x<<' '<<sol[i].y<<"\n";
	fout.close();
}

int main()
{
	Citire();
	Rezolvare();
	Afisare();
	return 0;
}