Cod sursa(job #1673307)

Utilizator RaduXD1Nicolae Radu RaduXD1 Data 3 aprilie 2016 17:19:46
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.5 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <bitset>

using namespace std;
ifstream fin ("grozavesti.in");
ofstream fout("grozavesti.out");
int v[310][310],i,j,h,mini,minii,minij,n,ii,jj,sol;
pair <int , pair<int, int> > f[1010];

void shimbaL(int x, int y)
{
    int i,aux;
    for(i=1;i<=n;i++)
    {
        aux=v[i][x];
        v[i][x]=v[i][y];
        v[i][y]=aux;
    }
    sol++;
    f[sol].first=1;
    f[sol].second.second=y;
    f[sol].second.first=x;
}

void shimbaC(int x, int y)
{
    int i,aux;
    for(i=1;i<=n;i++)
    {
        aux=v[x][i];
        v[x][i]=v[y][i];
        v[y][i]=aux;
    }
    sol++;
    f[sol].first=2;
    f[sol].second.second=y;
    f[sol].second.first=x;
}


int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            fin>>v[i][j];
    for(h=1;h<=n;h++)
    {
        mini=10000000LL;
        for(i=h;i<=n;i++)
            for(j=h;j<=n;j++)
                if(v[i][j]<mini)
                {
                    mini=v[i][j];
                    minii=i;
                    minij=j;
                }
        if(minii!=h)
            shimbaC(minii, h);
        if(minij!=h)
            shimbaL(minij, h);
    }
    fout<<sol<<"\n";
    for(i=1;i<=sol;i++)
    {
        if(f[i].first==1)
            fout<<"L ";
        else
            fout<<"C ";
        fout<<f[i].second.first<<" "<<f[i].second.second<<"\n";
    }
    fin.close();
    fout.close();
    return 0;
}