Pagini recente » Cod sursa (job #2685608) | Cod sursa (job #1019413) | Cod sursa (job #25135) | Cod sursa (job #2908154) | Cod sursa (job #2314773)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
int N,a[50][500],v[500],i,j,n,m,c,r,ans,curr,it;
inline int zeros (int x){
return x & (-x);
}
inline int cnt (int x){
int i = 0;
while (x){
x -= zeros(x);
++i;
}
return i;
}
int main()
{
ifstream fin ("elimin.in");
ofstream fout ("elimin.out");
fin >> n >> m >> r >>c;
if (n > m){
swap (n,m);
swap (r,c);
for (i = 0; i < n; ++i)
for(j = 0; j < m; ++j)
fin >> a[j][i];
}
else{
for (i = 0; i < n; ++i)
for(j = 0; j < m; ++j)
fin >> a[j][i];
}
N = (1 << n);
ans = 0;
for (it = 0; it < N; ++it)
if (cnt(it) == r){
for (i = 0; i < m; ++i)
v[i] = 0;
curr = 0;
for (i = 0; i < n; ++i)
if (!(it & (1 << i)))
for (j = 0; j < m; ++j)
v[j] += a[i][j];
sort (v,v + m);
for (i = c; i < m; ++i)
curr += v[i];
ans = max(ans,curr);
}
fout << ans;
return 0;
}