Cod sursa(job #668408)

Utilizator danalex97Dan H Alexandru danalex97 Data 24 ianuarie 2012 21:11:33
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.2 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

const char InFile[]="grozavesti.in";
const char OutFile[]="grozavesti.out";

struct cmd
{
	cmd(char ch2, int a2, int b2):a(a2),b(b2),ch(ch2){}
	int a,b;
	char ch;
};

struct el
{
	el(int poz2, int key2):poz(poz2),key(key2){}
	int poz,key;
};

bool el_cmp(el a, el b)
{
	return a.key<b.key;
}

ifstream fin(InFile);
ofstream fout(OutFile);

vector<cmd> instr;
vector<el> v;
int n,x;

void schimba(int a, int b)
{
	el e=v[a];
	v[a]=v[b];
	v[b]=e;
	instr.push_back(cmd('C',a,b));
	instr.push_back(cmd('L',a,b));
}

int main()
{
	v.push_back(el(0,0));
	fin>>n;
	for(register int i=1;i<=n;++i)
	{
		for(register int j=1;j<=n;++j)
		{
			fin>>x;
			if(i==j)
			{
				v.push_back(el(i,x));
			}
		}
	}
	fin.close();

	for(register int i=1;i<=n;++i)
	{
		int poz=i;
		for(register int j=i+1;j<=n;++j)
		{
			if(v[poz].key>v[j].key)
			{
				poz=j;
			}
		}
		if(poz!=i)
		{
			schimba(poz,i);
		}
	}
	fout<<instr.size()<<"\n";
	for(register int i=0;i<(int)instr.size();++i)
	{
		fout<<instr[i].ch<<" "<<instr[i].a<<" "<<instr[i].b<<"\n";
	}
	fout.close();
	return 0;
}