Pagini recente » Cod sursa (job #3194354) | Cod sursa (job #1426562) | Cod sursa (job #116862) | Borderou de evaluare (job #2169968) | Cod sursa (job #955710)
Cod sursa(job #955710)
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n, m, r, c, a[100][100], x[100], maxim;
vector <int> sol;
bool car[100];
void Calculare()
{
for(int i=1; i<=r; i++)
car[x[i]] = 1;
int sum = 0;
for(int j=1; j<=m; j++)
{
int s = 0;
for(int i=1; i<=n; i++)
if(!car[i]) s += a[i][j];
sol.push_back(s);
sum += s;
}
sort(sol.begin(), sol.end());
for(int i=0; i<c; i++)
sum -= sol[i];
sol.clear();
if(maxim < sum) maxim = sum;
for(int i=1; i<=r; i++)
car[x[i]] = 0;
}
void Back(int k)
{
if(k == r+1) Calculare();
else
for(int j=1; j<=n; j++)
{
x[k] = j;
Back(k+1);
}
}
int main()
{
fin>>n>>m>>r>>c;
for(int i=1; i<=n; i++)
for(int j=1; j<=m; j++)
fin>>a[i][j];
Back(1);
fout<<maxim;
return 0;
}