Pagini recente » Cod sursa (job #2747938) | Cod sursa (job #883146) | Cod sursa (job #1651659) | Cod sursa (job #2158113) | Cod sursa (job #17394)
Cod sursa(job #17394)
#include <cstdio>
#include <cstdlib>
#include <math.h>
using namespace std;
int col[100];
int tabla[100][100],n,m,r,c;
int gen_col(int x) {
int k=1;
while (x) {
if(x%2==0) col[k]=0;
else col[k]=1;
k++;
x=x/2;
}
return 1;
}
int suma() {
int sumelinii[2][100],min,s=0;
for (int i=1;i<=m;i++) {
sumelinii[0][i]=i;
sumelinii[1][i]=0;
for (int j=1;j<=n;j++)
sumelinii[1][i]+=tabla[i][j];
}
for (int i=1;i<=r;i++) {
min=1;
for (int j=2;j<=m;j++)
if (sumelinii[1][min]>sumelinii[1][j]) min=j;
sumelinii[0][min]=-1;
}
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
if ( (sumelinii[0][i]!=-1) && (col[j]!=1) )
s=s+tabla[i][j];
return s;
}
int valid() {
int s=0;
for (int i=1;i<=n;i++)
s=s+col[i];
if (s==c) return 1;
else return 0;
}
int main() {
int s=0,sl=0;
freopen("elimin.in","r",stdin);
scanf("%d %d %d %d",&m,&n,&r,&c);
for (int i=1;i<=m;i++)
for (int j=1;j<=n;j++)
scanf("%d",&tabla[i][j]);
for (int i=0;i<pow(2,m);i++) {
gen_col(i);
if (valid()) {
sl=suma();
if (sl>s) s=sl;
}
}
freopen("elimin.out","w",stdout);
printf("%d",s);
return 0;
}