Pagini recente » Cod sursa (job #2897187) | Cod sursa (job #2811310) | Cod sursa (job #2576804) | Cod sursa (job #2709787) | Cod sursa (job #2730598)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int arr[7500][20];
int row_sum[7500];
long long sum, ans = -2000000000;
int main() {
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n, m, r, c;
fin >> n >> m >> r >> c;
bool rev = (m > n);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (rev)
fin >> arr[j][i];
else
fin >> arr[i][j];
}
}
if (rev) {
swap(m, n);
swap(r, c);
}
for (int mask = 0; mask < (1 << m); ++mask) {
if (__builtin_popcount(mask) == c) {
for (int i = 1; i <= n; ++i)
row_sum[i] = 0;
sum = 0;
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j)
if (!(mask&(1 << (j-1)))) {
row_sum[i] += arr[i][j];
sum += arr[i][j];
}
}
sort(row_sum+1, row_sum+n+1);
for (int i = 1; i <= r; ++i)
sum -= row_sum[i];
ans = max(ans, sum);
}
}
fout << ans;
}