Pagini recente » Cod sursa (job #1631844) | Cod sursa (job #2891363) | Cod sursa (job #1738854) | Cod sursa (job #2323830) | Cod sursa (job #2913557)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#define int long long
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
const int inf = 1e18;
int main(){
int n, m, r, c;
fin >> n >> m >> r >> c;
if(n > m)
swap(n, m), swap(r, c);
vector <vector <int>> mat(n + 1, vector <int> (m + 1, 0));
for(int i = 1; i <= n; i++)
for(int j = 1; j <= m; j++)
fin >> mat[i][j];
int ans = -inf;
for(int config = 0; config < (1 << n); config++)
if(__builtin_popcount(config) == r){
vector <int> v;
for(int j = 1; j <= m; j++){
int s = 0;
for(int i = 1; i <= n; i++)
if( (config & (1 << (i - 1))) == 0)
s += mat[i][j];
v.push_back(s);
}
sort(v.begin(), v.end());
int sum = 0;
for(int i = (int)v.size() - 1; i >= c; i--)
sum += v[i];
ans = max(ans, sum);
}
fout << ans << '\n';
return 0;
}