Pagini recente » Cod sursa (job #1132500) | Cod sursa (job #848092) | Cod sursa (job #2768489) | Cod sursa (job #71087) | Cod sursa (job #1066375)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("elimin.in");
ofstream g("elimin.out");
const int Nmax = 700;
int n, m, r, c, maxsum;
int aux[Nmax], sum[Nmax], mat[Nmax][Nmax];
int main() {
int i, j, k, s, nrb;
f >> n >> m >> r >> c;
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
if (n > m)
f >> mat[j][i];
else
f >> mat[i][j];
if (n > m) {
swap(n, m);
swap(r, c);
}
for (i = 1; i <= n; ++i)
for (j = 1; j <= m; ++j)
sum[j] += mat[i][j];
for (i = 0; i < (1 << n); ++i) {
nrb = 0;
for (j = 0; (1 << j) <= i; ++j)
if ((1 << j) & i)
++nrb;
if (nrb != r)
continue;
copy(sum + 1, sum + m + 1, aux + 1);
for (j = 0; (1 << j) <= i; ++j)
if ((1 << j) & i)
for (k = 1; k <= m; ++k)
aux[k] -= mat[j + 1][k];
nth_element(aux + 1, aux + c + 1, aux + m + 1);
s = 0;
for (j = c + 1; j <= m; ++j)
s += aux[j];
maxsum = max(maxsum, s);
}
g << maxsum;
f.close();
g.close();
return 0;
}