Cod sursa(job #608519)

Utilizator mihai995mihai995 mihai995 Data 17 august 2011 00:36:19
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <algorithm>
using namespace std;

const int N=301;
int v[N][N],ord[N],a[N],n,nr,D=-1;
char PRINT[N*N];

ifstream in("grozavesti.in");
ofstream out("grozavesti.out");

inline void sch(int &a,int &b)
{
    int c=a;a=b;b=c;
}

inline bool cmp(int a,int b)
{
    return v[a][a]<v[b][b];
}

void add(int x)
{
    if (x<10)
    {
        PRINT[++D]=x+'0';
        return;
    }
    add(x/10);
    PRINT[++D]=x%10+'0';
}

inline void muta(int &x,int &y)
{
    nr+=2;
    sch(x,y);
    PRINT[++D]='L';
    PRINT[++D]=' ';
    add(x);
    PRINT[++D]=' ';
    add(y);
    PRINT[++D]='\n';
    PRINT[++D]='C';
    PRINT[++D]=' ';
    add(x);
    PRINT[++D]=' ';
    add(y);
    PRINT[++D]='\n';
}

int main()
{
    in>>n;
    for (int i=1;i<=n;i++)
    {
        for (int j=1;j<=n;j++)
            in>>v[i][j];
        ord[i]=i;
    }
    sort(ord+1,ord+n+1,cmp);
    for (int i=1;i<=n;i++)
        a[ord[i]]=i;
    for (int i=1;i<=n;i++)
        if (a[i]!=i)
            muta(a[i],a[ord[i]]);
    out<<nr<<"\n";
    out<<PRINT;
    return 0;
}