Pagini recente » Cod sursa (job #1836475) | Cod sursa (job #2930040) | Cod sursa (job #1962692) | Cod sursa (job #1800541) | Cod sursa (job #2109019)
#include <bits/stdc++.h>
#define N 7210
using namespace std;
ifstream in("elimin.in");
ofstream out("elimin.out");
int n, m, l, c, a[20][N], b[20][N], st[N], vf, lim, bst, rs;
int main(){
in >> n >> m >> l >> c;
if(n <= m)
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
in >> a[i][j];
else
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
in >> a[j][i];
if(n > m){
swap(n, m);
swap(l, c);
}
lim = (1 << n);
for(int mask = 0; mask < lim; mask++){
if(__builtin_popcount(mask) != l)
continue;
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
b[i][j] = a[i][j];
for(int bit = 0; bit < n; bit++)
if((1 << bit) & mask)
for(int j = 1; j <= m; j++)
b[bit + 1][j] = 0;
for(int i = 2; i <= n; i++)
for(int j = 1; j <= m; j++)
b[i][j] += b[i - 1][j];
for(int j = 1; j <= m; j++)
st[j] = b[n][j];
sort(st + 1, st + m + 1);
rs = 0;
for(int j = c + 1; j <= m; j++)
rs += st[j];
bst = max(bst, rs);
}
out << bst;
return 0;
}