Pagini recente » Cod sursa (job #1821556) | Cod sursa (job #3270546) | Cod sursa (job #1708442) | Cod sursa (job #3170138) | Cod sursa (job #3255673)
#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
{
vector<vector<int>> g;
int lg = 0;
for (int i = 1; i <= n; i++)
if (f[i - 1])
{
g.push_back(vector<int>());
int s = 0;
for (int j = 1; j <= m; j++)
g[lg].push_back(v[i][j]);
lg++;
}
int st, s;
st = 0;
vector<int> sume;
for (int j = 0; j < m; j++)
{
s = 0;
for (int i = 0; i < lg; i++)
s += g[i][j];
sume.push_back(s);
st += s;
}
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
{
vector<vector<int>> g(n);
int lg = 0;
for (int j = 1; j <= m; j++)
if (f[j - 1])
{
int s = 0;
for (int i = 1; i <= n; i++)
g[i - 1].push_back(v[i][j]);
lg++;
}
int st, s;
st = 0;
vector<int> sume;
for (int i = 0; i < n; i++)
{
s = 0;
for (int j = 0; j < lg; j++)
s += g[i][j];
sume.push_back(s);
st += s;
}
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;
}