Cod sursa(job #2078230)

Utilizator CodrutLemeniCodrut Lemeni CodrutLemeni Data 29 noiembrie 2017 08:54:45
Problema Grozavesti Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <vector>

using namespace std;

const int N = 302 ;

int noLin , diag [ N ] ;
vector < pair < int , int > > sol ;

int getMin ( int pos ){
    static int i , valMin , posMin;

    valMin = 1e7 ;
    for ( i = pos ; i < noLin ; i++ ){
        if ( valMin > diag[ i ] ){
            valMin = diag [ i ];
            posMin = i ;
        }
    }
    return posMin ;
}



int main(){

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

    scanf("%d",&noLin);

    for ( int i = 0 ; i < noLin ; i++ ){
        for ( int j = 0 ; j < noLin ; j++ ){
            int temp ;
            scanf("%d",&temp);
            if ( i == j ){
                diag [ i ] = temp ;
            }
        }
    }

    for ( int i = 0 ; i < noLin ; i++ ){

        int pos = getMin( i + 1  );

        if ( diag [ pos ] >= diag [ i ] ){
            continue ;
        }

        sol.push_back( make_pair( i , pos ) );
//        printf("C %d %d\n",i , pos );
//        printf("L %d %d\n",i , pos );

        swap ( diag [ i ] , diag [ pos ] );

    }
    printf("%d\n",sol.size() * 2 );
    for ( auto it = sol.begin() ; it != sol.end () ; it++ ){
        printf("C %d %d\n",it->first , it->second );
        printf("L %d %d\n",it->first , it->second );
    }


    return 0;
}