Cod sursa(job #3171236)

Utilizator MAlex2019Melintioi George Alexandru MAlex2019 Data 18 noiembrie 2023 16:26:49
Problema Elimin Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin("elimin.in");
ofstream fout("elimin.out");

const int maxn = 7294;
int v[maxn + 1][maxn + 1];
int n, m;

void swaplines(int i1, int i2) {
    for (int j = 0; j <= m; j++)
        swap(v[i1][j], v[i2][j]);
}

void swapcolumns(int j1, int j2) {
    for (int i = 0; i <= n; i++)
        swap(v[i][j1], v[i][j2]);
}

int main() {
    int r, c;
    fin >> n >> m >> r >> c;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) {
            fin >> v[i][j];
            v[i][m] += v[i][j];
            v[n][j] += v[i][j];
        }
    for (int i = 0; i < n - 1; i++) {
        int mini = i;
        for (int j = i + 1; j < n; j++)
            if (v[j][m] < v[mini][m])
                mini = j;
        swaplines(i, mini);
    }

    for (int j = 0; j < m; j++)
        for (int i = 0; i < r; i++)
            v[n][j] -= v[i][j];

    for (int i = 0; i < m - 1; i++) {
        int mini = i;
        for (int j = i + 1; j < m; j++)
            if (v[n][j] < v[n][mini])
                mini = j;
        swapcolumns(i, mini);
    }
    int sum = 0;
    for (int i = r; i < n; i++)
        for (int j = c; j < m; j++)
            sum += v[i][j];
    fout << sum;

    return 0;
}