Pagini recente » Cod sursa (job #2680833) | Cod sursa (job #136718) | Cod sursa (job #3255392) | Cod sursa (job #1233042) | Cod sursa (job #3255647)
#include <bits/stdc++.h>
using namespace std;
ifstream fcin("elimin.in");
ofstream fcout("elimin.out");
const int N = 105;
int v[N][N];
int n, m, r, c, smax;
int main()
{
cin >> n >> m >> r >> c;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> 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;
int lg = 0;
for (int j = 1; j <= m; j++)
if (f[j - 1])
{
g.push_back(vector<int>());
int s = 0;
for (int i = 1; i <= n; i++)
g[lg].push_back(v[i][j]);
lg++;
}
int st, s;
st = 0;
vector<int> sume;
for (int i = 0; i < lg; i++)
{
s = 0;
for (int j = 0; j < m; 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);
for (auto e : g)
{
for (auto e2 : e)
cout << e2 << ' ';
cout << endl;
}
cout << endl;
} while(next_permutation(f.begin(), f.end()));
}
cout << smax;
return 0;
}