Cod sursa(job #1011424)

Utilizator Dddarius95Darius-Florentin Neatu Dddarius95 Data 16 octombrie 2013 20:36:26
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.27 kb
#include<fstream>
#include<vector>
#define Nmax 309
using namespace std;
ifstream f("grozavesti.in");
ofstream g("grozavesti.out");

int N,a[Nmax][Nmax],minim,poz;
struct Solutie{char c;int x,y;}s;
vector <Solutie> sol;

inline void ReadInput()
{
    f>>N;
    for(int i=1;i<=N;++i)
        for(int j=1;j<=N;++j)f>>a[i][j];
}

inline void InterschimbaLinie(int x,int y)
{
    for(int j=1;j<=N;++j)swap(a[x][j],a[y][j]);
}

inline void InterschimbaColoana(int x,int y)
{
    for(int i=1;i<=N;++i)swap(a[i][x],a[i][y]);
}


void Solve()
{
    for(int k=1;k<=N;++k)
    {
        minim=a[k][k];
        poz=k;
        for(int i=k;i<=N;++i)
        {
            if(a[i][i]<minim)
            {
                minim=a[i][i];
                poz=i;
            }
        }
        if(poz!=k)
        {
            s.c='C'; s.x=k; s.y=poz; sol.push_back(s);
            s.c='L'; sol.push_back(s);
            InterschimbaColoana(k,poz);
            InterschimbaLinie(k,poz);
        }
    }
}

void PrintOutput()
{
    g<<sol.size()<<'\n';
    for(int i=0;i<sol.size();++i)
        g<<sol[i].c<<' '<<sol[i].x<<' '<<sol[i].y<<'\n';
}

int main()
{
    ReadInput();
    Solve();
    PrintOutput();
    f.close();g.close();
    return 0;
}