Pagini recente » Cod sursa (job #98763) | Cod sursa (job #36994) | Cod sursa (job #1923014) | Cod sursa (job #382778) | Cod sursa (job #2758565)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int main() {
int arr[7500][20];
int row_sum[7500];
long long ans = 0;
int n, m, r, c;
fin >> n >> m >> r >> c;
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= m; ++j)
if (m > n)
fin >> arr[j][i];
else
fin >> arr[i][j];
if (m > n) {
swap(m, n);
swap(r, c);
}
for (int mask = 0; mask < (1 << m); ++mask) {
if (__builtin_popcount(mask) == n-c) {
for (int i = 1; i <= n; ++i)
row_sum[i] = 0;
long long sum = 0;
int msk = mask;
while (msk) {
int first_one = msk & (-msk);
int pos = __builtin_ctz(pos)+1;
for (int i = 1; i <= n; ++i) {
row_sum[i] += arr[i][pos];
sum += arr[i][pos];
}
msk -= first_one;
}
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;
}