Pagini recente » Cod sursa (job #1983151) | Cod sursa (job #2494036) | Cod sursa (job #559027) | Cod sursa (job #1456637) | Cod sursa (job #1014529)
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <algorithm>
#define kNMAX 700
int Mat[20][8000], suma[8000];
int nrLinii, nrColoane, xColoane, xLinii, sumaInitiala, sumaMax;
std::fstream in, out;
void citire(){
in >> nrLinii >> nrColoane >> xLinii >> xColoane;
if (nrLinii <= nrColoane){
for(int i = 1; i <= nrLinii; i++)
for(int j = 1; j <= nrColoane; j++){
in >> Mat[i][j];
}
}else{
for(int i = 1; i <= nrLinii; i++)
for(int j = 1; j <= nrColoane; j++){
in >> Mat[j][i];
}
std::swap(nrLinii, nrColoane);
std::swap(xColoane, xLinii);
}
return;
}
int main(){
in.open("elimin.in", std::ios::in);
out.open("elimin.out", std::ios::out);
citire();
for(int i = 1; i < (1 << nrLinii); i++){
int nr1 = 0;
for(int j = 0; j < nrLinii; j++){
if ((1 << j) & i) nr1++;
}
if (nr1 != nrLinii - xLinii) continue;
std::fill(suma + 1, suma + nrColoane + 1, 0);
for(int j = 1; j <= nrLinii; j++){
if ((1 << (j - 1)) & i){
for(int c = 1; c <= nrColoane; c++)
suma[c] += Mat[j][c];
}
}
std::sort(suma + 1, suma + nrLinii + 1);
int aux = 0;
for(int i = xColoane + 1; i <= nrColoane; i++){
aux += suma[i];
}
sumaMax = std::max(aux, sumaMax);
}
out << sumaMax;
in.close();
out.close();
return 0;
}