Pagini recente » Monitorul de evaluare | Cod sursa (job #2657319) | Cod sursa (job #2220566) | Cod sursa (job #1803721) | Cod sursa (job #1542181)
#include <stdio.h>
#include <algorithm>
using namespace std;
int n,m,i,j,t[7300][20],x,y,maxx;
void back()
{
int i,j;
for (i=0;i<(1<<m);i++) {
int nrcol=0;
for (j=0;j<m;j++)
if ((i>>j)&1==1) nrcol++;
if (nrcol==y) {
int ii,jj,b,sumlin=0,lin[7300]={0};
for (ii=1;ii<=n;ii++)
for (jj=1;jj<=m;jj++) {
if (((i>>(jj-1))&1)!=1) lin[ii]+=t[ii][jj],sumlin+=t[ii][jj]; else
b=0;
}
sort(lin+1,lin+n+1); int li=0;
for (ii=1;ii<=x;ii++) li+=lin[ii];
if (sumlin-li>maxx) maxx=sumlin-li;
}
}
}
int main() {
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&x,&y);
if (n>m) {
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&t[i][j]);
} else {
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
scanf("%d",&t[j][i]);
swap(n,m); swap(x,y);
}
back();
printf("%d",maxx);
return 0;
}