Cod sursa(job #1349514)

Utilizator matei_cChristescu Matei matei_c Data 20 februarie 2015 11:51:08
Problema Grozavesti Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.53 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<cmath>
using namespace std ;

#define maxn 305
#define maxx 1000005

int N ;

int a[maxn][maxn], v[maxn] ;

struct schimburi
{
    int ce, unu, doi ;
};

int nrs ;

schimburi s[2 * maxn] ;

int main()
{
	std::ios_base::sync_with_stdio(false) ;

	freopen("grozavesti.in", "r", stdin);
	freopen("grozavesti.out", "w", stdout);

    cin >> N ;

    for(int i = 1; i <= N; ++i)
    {
        for(int j = 1; j <= N; ++j)
        {
            cin >> a[i][j] ;

            if( i == j )
                v[i] = a[i][i] ;
        }
    }

    for(int i = 1; i <= N; ++i)
    {
        int minim = maxx ;
        int lin, col ;

        for(int j = i; j <= N; ++j)
        {
            if( v[j] < minim )
            {
                minim = v[j] ;
                lin = j ;
                col = j ;
            }
        }

        if( v[i] != minim )
        {
            swap( v[i], v[lin] ) ;

            s[++nrs].ce = 0 ;
            s[nrs].unu = i ;
            s[nrs].doi = lin ;

            s[++nrs].ce = 1 ;
            s[nrs].unu = i ;
            s[nrs].doi = col ;
        }
    }

    cout << nrs << "\n" ;

    for(int i = 1; i <= nrs; ++i)
    {
        if( s[i].ce == 0 )
            cout << "L " ;
        else
            cout << "C " ;

        cout << s[i].unu << " " << s[i].doi << "\n" ;
    }

	return 0 ;
}