Pagini recente » Cod sursa (job #3137519) | Cod sursa (job #21437) | Cod sursa (job #249262) | Cod sursa (job #3040541) | Cod sursa (job #2716386)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int a[1024][16], N, M, R, C;
void max_self(long long &a, long long b) {
a = max(a, b);
}
int main() {
fin >> N >> M >> R >> C;
for(int i = 1; i <= N; ++i)
for(int j = 1; j <= M; ++j)
if(N >= M)
fin >> a[i][j];
else
fin >> a[j][i];
int dim = min(N, M);
if(dim == N) {
swap(N, M);
swap(R, C);
}
long long ans = 0;
for(int mask = 0; mask < (1 << M); ++mask)
if(__builtin_popcount(mask) == C) {
vector<long long> sum(N + 1);
long long best = 0;
for(int j = 1; j <= M; ++j)
if(!(mask & (1 << (j - 1))))
for(int i = 1; i <= N; ++i)
sum[i] += a[i][j], best += a[i][j];
sort(sum.begin() + 1, sum.end());
for(int i = 1; i <= R; ++i)
best -= sum[i];
max_self(ans, best);
}
fout << ans << '\n';
}