Pagini recente » Cod sursa (job #1715632) | Cod sursa (job #1715618) | Cod sursa (job #1714627) | Cod sursa (job #638139) | Cod sursa (job #1758180)
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int n,m,l,c,mat[100][100];
int viz[100],sol[100];
vector < pair <int ,int > > sum;
int sum_max=0;
void calc()
{
int suma=0,j;
sum.clear();
for (int i=1;i<=m;++i)
{
suma=0;
for (j=1;j<=n;++j)
if (!viz[j])
suma+=mat[j][i];
sum.push_back(make_pair(suma,i));
}
sort(sum.begin(),sum.end());
suma=0;
for (int i=c;i<sum.size();i++)
suma+=sum[i].first;
if (suma > sum_max)
sum_max=suma;
}
void combinari(int k)
{
if (k>l)
{
calc();
return;
}
for (sol[k]=sol[k-1]+1;sol[k]<=n-l+k;sol[k]++)
{
viz[sol[k]]=1;
combinari(k+1);
viz[sol[k]]=0;
}
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&l,&c);
for (int i=1;i<=n;++i)
for (int j=1;j<=m;++j)
scanf("%d",&mat[i][j]);
combinari(1);
printf("%d",sum_max);
return 0;
}