Cod sursa(job #1662081)

Utilizator mihai.constantinConstantin Mihai mihai.constantin Data 24 martie 2016 14:34:48
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include <iostream>
#include <fstream>
using namespace std;

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

const int N_max = 302;
const int INF = 1000005;

int A[N_max][N_max];

struct ELEMENT
{
    int lin, col;
};
ELEMENT v[N_max];

int ans;

int N;

void read()
{
    int i, j;

    in >> N;

    for(i = 1; i <= N; i++)
        for(j = 1; j <= N; j++) in >> A[i][j];
}

void solve()
{
    int i, j, k, Min, x;

    for(i = 1; i <= N; i++)
    {
        Min = INF;

        for(j = i; j <= N; j++)
            if(Min > A[j][j])
            {
                Min = A[j][j];

                x = j;
            }

        if(x != i)
        {
            ans += 1;

            // INTERSCHIMB LINIA i cu x
            for(k = 1; k <= N; k++) swap(A[i][k], A[x][k]);

            // INTERSCHIMB COLOANA i cu x
            for(k = 1; k <= N; k++) swap(A[k][x], A[k][i]);

            v[ans].lin = i;
            v[ans].col = x;
        }
    }
}

void write()
{
    out << 2 * ans << '\n';

    for(int i = 1; i <= ans; i++)
    {
        out << "L" << " " << v[i].lin << " " << v[i].col << '\n';

        out << "C" << " " << v[i].lin << " " << v[i].col << '\n';
    }
}

int main()
{
    read();

    solve();

    write();

    return 0;
}