Cod sursa(job #3121406)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 12 aprilie 2023 16:48:10
Problema Grozavesti Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int diag[305];
short a[305], b[305];

int main()
{
    short n, nri = 0;
    int x;
    fin>>n;

    for (short i = 1; i <= n; i++)
        for (short j = 1; j <= n; j++) {
            fin>>x;

            if (i == j) diag[i] = x;
        }

    /// sortez diagonala
    for (short i = 1; i < n; i++) {
        short pozmin = i;
        int minim = diag[i];

        for (short j = i+1; j <= n; j++) if (diag[j] < minim) minim = diag[j], pozmin = j;

        if (i != pozmin) { /// interschimb
            swap(diag[i], diag[pozmin]);
            nri++; /// inca o interschimbare
            a[nri] = i;
            b[nri] = pozmin; /// a[i], b[i] sunt liniile si coloanele interschimbate la interschimbarea i
        }
    }

    fout<<2*nri; /// la fiecare interchimbare, facem 2 interschimbari

    for (short i = 1; i <= nri; i++) {
        fout<<"\nL "<<a[i]<<' '<<b[i]<<"\nC "<<a[i]<<' '<<b[i];
    }

    return 0;
}