Cod sursa(job #1235022)

Utilizator felixiPuscasu Felix felixi Data 28 septembrie 2014 16:18:42
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <algorithm>
#include <fstream>
#include <queue>

using namespace std;

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

const int NMAX = 300;

struct LOL {
    int p,v;
};

struct H_comp {
    bool operator()(const LOL &A, const LOL &B) {
        return ( A.v > B.v );
    }
};

priority_queue <LOL, vector<LOL>, H_comp > H;
int v[NMAX+1][NMAX+1];
int N;

int main() {
    in >> N;
    for( int i= 1;  i<=N;  ++i ) {
        for( int j= 1;  j<=N;  ++j ) {
            in >> v[i][j];
            if( i==j ) {
                LOL A;
                A.v= v[i][j];
                A.p= i;
                H.push( A );
            }
        }
    }
    out << 2*N << '\n';
    if( N == 1 ) return 0;
    for( int i= 1;  i<=N;  ++i ) {
        if( H.top().v != v[i][i] ) {
            out << "C " << i << ' ' << H.top().p << '\n';
            out << "L " << i << ' ' << H.top().p << '\n';
            swap( v[i][i], v[H.top().p][H.top().p] );
        }
        else {
            out << "C 1 2" << '\n' << "C 1 2" << '\n';
        }
        H.pop();
    }
    return 0;
}