Cod sursa(job #2197463)

Utilizator ruxandramateiMatei Ruxandra ruxandramatei Data 22 aprilie 2018 11:37:23
Problema Elimin Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.47 kb
#include <iostream>
#include <fstream>

using namespace std;

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

int n, m, r, c;// se da o matrice de n pe m si trebuie sa elimin exact r linii si c coloane
int matr[101][101];//matricea contine numere naturale
int linie[101],coloana[101];
int sumMax, nrLin, nrCol;

void citire(){
    in >> n >> m >> r >> c;
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= m; j++){
            in >> matr[i][j];
        }
    }
}


void bktColoane(int varf){
    for(int i = coloana[varf - 1] + 1; i <= m; i++){
        coloana[varf] = i;
        if(varf <= nrCol){
            if(varf == nrCol){
                int sumTemp = 0;
                for(int auxL = 1; auxL <= nrLin; auxL++){
                        for(int auxC = 1; auxC <= nrCol; auxC++){
                            sumTemp = sumTemp + matr[linie[auxL]][coloana[auxC]];
                        }
                }
                if(sumTemp > sumMax){
                    sumMax = sumTemp;
                }
            }else{
                bktColoane(varf + 1);
            }
        }
    }
}

void bktLinii(int varf){
    for(int i = linie[varf - 1] + 1; i <= n; i++){
        linie[varf] = i;
        if(varf <= nrLin){
            if(varf == nrLin){
                bktColoane(1);
            }else{
                bktLinii(varf + 1);
            }
        }
    }
}

int main() {
    citire();
    nrLin = n - r;
    nrCol = m - c;
    bktLinii(1);
    out << sumMax;
    return 0;
}