Cod sursa(job #1307533)

Utilizator laurageorgescuLaura Georgescu laurageorgescu Data 2 ianuarie 2015 15:03:18
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.36 kb
#include<fstream>
#include<algorithm>

using namespace std;

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

const int nmax = 300;
struct str1 { int lin, val; } v[ nmax + 1 ];
int p[ nmax + 1 ], k[ nmax + 1 ];
struct str2 { int x, y; } ans[ nmax + 1 ];

bool cmp( str1 a, str1 b ) {
    return ( a.val < b.val );
}
int main() {
    int n, x, k1, p1, k2, p2, sol;
    fin >> n;
    for( int i = 1; i <= n; ++ i ) {
        p[ i ] = i;
        for( int j = 1; j < i; ++ j ) {
            fin >> x;
        }
        v[ i ].lin = i;
        fin >> v[ i ].val;
        p[ i ] = i;
        k[ i ] = i;
        for( int j = i + 1; j <= n; ++ j ) {
            fin >> x;
        }
    }
    sort( v + 1, v + n + 1, cmp );
    sol = 0;
    for( int i = 1; i <= n; ++ i ) {
        if ( p[ i ] != v[ i ].lin ) {
            ans[ sol ].x = i;
            ans[ sol ].y = k[ v[ i ].lin ];
            ++ sol;

            p1 = p[ i ];
            k1 = i;
            p2 = v[ i ].lin;
            k2 = k[ p2 ];

            p[ k1 ] = p2;
            p[ k2 ] = p1;
            k[ p1 ] = k2;
            k[ p2 ] = k1;
        }
    }

    fout << 2 * sol << "\n";
    for( int i = 0; i < sol; ++ i ) {
        fout << "L " << ans[ i ].x << " " << ans[ i ].y << "\n";
        fout << "C " << ans[ i ].x << " " << ans[ i ].y << "\n";
    }
    fin.close();
    fout.close();
    return 0;
}