Cod sursa(job #187372)

Utilizator Mishu91Andrei Misarca Mishu91 Data 3 mai 2008 17:44:42
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.34 kb
#include <cstdio>
#include <algorithm>
#define MAX_N 301
#define INF 1000002

using namespace std;

int A[MAX_N][MAX_N], N ,nrs;

struct schimb{char c; int i1,i2;}S[2*MAX_N];

void read()
{
    scanf("%d\n",&N);
    for(int i=0; i<N; i++)
        for(int j=0; j<N; j++)
            scanf("%d",&A[i][j]);
}

void schlin(int i, int j)
{
    for(int k=0; k<N; k++)
        swap(A[i][k],A[j][k]);
}

void schcol(int i,int j)
{
    for(int k=0; k<N; k++)
        swap(A[k][i],A[k][j]);
}

void find_min(int x, int &ik, int &jk)
{
    int min = INF;
    for(int i=x; i<N; i++)
        for(int j=x; j<N; j++)
            if(A[i][j] < min)
                min = A[i][j], ik = i, jk = j;

}

void solve()
{
    int i,j;
    for(int x=0; x<N; x++)
    {
        find_min(x,i,j);
        if(i - x)
        {
            schlin(i,x);
            S[nrs++].c = 'L';
            S[nrs].i1 = i;
            S[nrs].i2 = x;
        }
        if(j - x)
        {
            schcol(j,x);
            S[nrs++].c = 'C';
            S[nrs].i1 = j;
            S[nrs].i2 = x;
        }
    }
    printf("%d\n",nrs);
    for(int i=0; i<nrs; i++)
        printf("%c %d %d\n",S[i].c,S[i].i1,S[i].i2);
}

int main()
{
    freopen("grozavesti.in","rt",stdin);
    freopen("grozavesti.out","wt",stdout);
    read();
    solve();
}