Cod sursa(job #3248236)

Utilizator LolluckestarNastasa-Baras Luca Lolluckestar Data 11 octombrie 2024 10:23:25
Problema Grozavesti Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.56 kb
#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
#include<fstream>

using namespace std;
ifstream fin("grozavesti.in");
ofstream fout("grozavesti.out");

struct{
    char name;
    long p;
    long q;
}a[205];

void swapLine(long i,long j,vector<vector<long>> &mat){
    for(int k = 0;k<mat.size();k++){
        swap(mat[i][k],mat[j][k]);
    }
}

void swapCol(long i,long j,vector<vector<long>> &mat){
    for(int k = 0;k<mat.size();k++){
        swap(mat[k][i],mat[k][j]);
    }
}

void solve(long n, vector<vector<long>> &mat){
    long nr_change = 0;
    long lg = 0;
    for(int i=0;i<n;i++){
        long poz = i;
        long min = mat[i][i];
        for(int j=i+1;j<n;j++){
            long el = mat[j][j];
            if(el<min){
                min = el;
                poz = j;
            }
        }
        if(poz !=i){
            swapLine(i,poz,mat);
            a[lg].name = 'L';
            a[lg].p = i;
            a[lg].q = poz;
            lg++;  
            swapCol(i,poz,mat);
            a[lg].name = 'C';
            a[lg].p = i;
            a[lg].q = poz;
            lg++;  
            nr_change += 2;
        }
    }

    fout<<nr_change;
    for(int i=0;i<lg;i++)
    { 
        fout<<a[lg].name<<' '<<a[lg].p<<a[lg].q;
    }
}

int main(){
    long n;
    vector<vector<long>> mat;
    
    fin>>n;

    for(int i=0;i<n;i++)
    { 
        for(int j=0 ;j<n;j++){
            fin >> mat[i][j];
        }
    }
    fin.close();
    solve(n,mat);
    return 0;
}