Pagini recente » Cod sursa (job #433614) | Istoria paginii runda/cocurs | Cod sursa (job #154331) | Cod sursa (job #799533) | Cod sursa (job #1017366)
#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[j][i];
}
std::swap(nrLinii, nrColoane);
std::swap(xColoane, xLinii);
}else{
for(int i = 1; i <= nrLinii; i++)
for(int j = 1; j <= nrColoane; j++)
in >> Mat[i][j];
}
return;
}
int main(){
in.open("elimin.in", std::ios::in);
out.open("elimin.out", std::ios::out);
citire();
for(int val = 0; val < (1 << nrLinii); val++){
int nr1 = 0;
for(int j = 0; j < nrLinii; j++){
if ((1 << j) & val) nr1++;
}
if (nr1 != nrLinii - xLinii) continue;
std::fill(suma, suma + nrColoane + 1, 0);
for(int i = 1; i <= nrLinii; i++){
if ((1 << (i - 1)) & val){
for(int j = 1; j <= nrColoane; j++)
suma[j] += Mat[i][j];
}
}
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;
std::cout << sumaMax;
in.close();
out.close();
return 0;
}