Pagini recente » Cod sursa (job #2390926) | Cod sursa (job #1622733) | Cod sursa (job #669560) | Cod sursa (job #2640529) | Cod sursa (job #2765713)
#include <fstream>
#include <algorithm>
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];
int v[7295];
void solutie() {
int i, sum = 0, j, aux;
bool elim[16] = {0};
for (i = 1; i <= R; i++)
elim[comb[i]] = 1;
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[j] = aux;
}
sort(v + 1, v + m + 1);
for (i = 1; i <= C; i++)
sum -= v[i];
Maxsum = (sum > Maxsum ? sum : Maxsum);
}
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;
}