Pagini recente » Cod sursa (job #2433210) | Cod sursa (job #616461) | Cod sursa (job #2135780) | Cod sursa (job #1572011) | Cod sursa (job #2765712)
#include <fstream>
#include <algorithm>
#include <iostream>
using namespace std;
short a[16][7295];
short n, m, R, C;
void read() {
int i, j;
ifstream f("elimin.in");
f >> n >> m >> R >> C;
if (n > m) {
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
f >> a[j][i];
swap(n, m), swap(R, C);
}
else {
for (i = 1; i <= n; i++)
for (j = 1; j <= m; j++)
f >> a[i][j];
}
f.close();
}
int Maxsum;
short comb[16];
bool elim[16];
int v[7295], l;
void solutie() {
int i, sum = 0, j, aux;
for (i = 1; i <= n; i++)
elim[i] = 0;
for (i = 1; i <= R; i++)
elim[comb[i]] = 1;
l = 0;
for (j = 1; j <= m; j++) {
aux = 0;
for (i = 1; i <= n; i++)
if (!elim[i]) {
aux += a[i][j];
sum += a[i][j];
}
v[++l] = aux;
}
sort(v + 1, v + l + 1);
for (i = 1; i <= C; i++)
sum -= v[i];
if (sum > Maxsum)
Maxsum = sum;
}
void back(int k) {
for (int i = comb[k - 1] + 1; i <= n + k - R; i++) {
comb[k] = i;
if (k < R)
back(k + 1);
else solutie();
}
}
void output() {
ofstream g("elimin.out");
g << Maxsum;
g.close();
}
int main() {
read();
back(1);
output();
return 0;
}