Pagini recente » Cod sursa (job #2971261) | Cod sursa (job #3185106) | Cod sursa (job #339773) | Cod sursa (job #918962) | Cod sursa (job #485648)
Cod sursa(job #485648)
#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();
sort(v.begin(),v.end(),el_cmp);
for(register int i=1;i<=n;++i)
{
while(v[i].poz!=i)
{
schimba(i,v[i].poz);
}
}
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;
}