Cod sursa(job #1488183)

Utilizator sebyvsCarp Sebastian sebyvs Data 18 septembrie 2015 09:06:13
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.43 kb
int a[50][50], n;

struct afisare
{
    char s;
    int i, p;
}v[10001];

inline void Inter_Linii(int Linia1, int Linia2)
{
    int i;
    for(i = 1; i <= n; i++)
        swap(a[Linia1][i], a[Linia2][i]);
}

inline void Inter_Col(int Col1, int Col2)
{
    int i;
    for(i = 1; i <= n; i++)
        swap(a[i][Col1], a[i][Col1]);
}

int main()
{
    int i, j;

    ifstream fin("grozavesti.in");
    fin >> n;
    for(i = 1; i <= n; i++)
        for(j = 1; j <= n; j++)
            fin >> a[i][j];
    fin.close();


    ofstream fout("grozavesti.out");
    int l, mutari, p, minim;
    l = 0;
    mutari = 0;

    for(i = 1; i < n; i++)
    {
        p = i;
        /// caut pozitia p a minimului dintre elementele a[i][i], a[n][n]
        /// interschimb liniile i cu p si coloanele i cu p
        for(j = i; j <= n; j++)
            if(a[j][j] < minim)
            {
                minim = a[j][j];
                p = j;
            }

        if(i != p)
        {
            mutari += 2;
            Inter_Linii(i, p);
            v[++l].s = 'L';
            v[l].i = i;
            v[l].p = p;
            Inter_Col(i, p);
            v[++l].s = 'C';
            v[l].i = i;
            v[l].p = p;
        }
    }

    fout << mutari << "\n";
    for(int i = 1; i <= l; i++)
    {
        fout << v[i].s << " " << v[i].i << " " << v[l].p <<"\n";
    }
    fout.close();

    return 0;
}