Pagini recente » Cod sursa (job #2094812) | Cod sursa (job #1091532) | Cod sursa (job #913684) | Cod sursa (job #753427) | Cod sursa (job #3255674)
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("elimin.in");
ofstream fcout("elimin.out");
const int N = 1005;
int v[N][N];
int n, m, r, c, smax;
int main()
{
fcin >> n >> m >> r >> c;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
fcin >> v[i][j];
if (n < m)
{
vector<bool> f(n, 1);
for (int i = 0; i < r; i++)
f[i] = 0;
do /// scoatem r linii
{
vector<int> sume(m);
int st = 0;
for (int j = 1; j <= m; j++)
for (int i = 1; i <= n; i++)
if (f[i - 1])
{
st += v[i][j];
sume[j - 1] += v[i][j];
}
sort(sume.begin(), sume.end());
for (int i = 0; i < c; i++)
st -= sume[i];
smax = max(smax, st);
} while(next_permutation(f.begin(), f.end()));
}
else
{
vector<bool> f(m, 1);
for (int i = 0; i < c; i++)
f[i] = 0;
do /// scoatem c coloane
{
vector<int> sume(n);
int st = 0;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (f[j - 1])
{
st += v[i][j];
sume[i - 1] += v[i][j];
}
sort(sume.begin(), sume.end());
for (int i = 0; i < r; i++)
st -= sume[i];
smax = max(smax, st);
} while(next_permutation(f.begin(), f.end()));
}
fcout << smax;
return 0;
}