Pagini recente » Cod sursa (job #1880466) | Cod sursa (job #1625351) | Statistici Nen Ioana Madlena (Rizi_San) | Cod sursa (job #147751) | Cod sursa (job #1164189)
#include <cstdio>
#include <algorithm>
using namespace std;
int Mat[7300][17],i,j,n,m,St;
int R,C,v[7300],l,nrbit;
bool q[105];
int RezFinal;
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d %d %d %d",&n,&m,&R,&C);
if (m<n)
{
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{scanf("%d",&Mat[i][j]); St+=Mat[i][j];}
}
else
{
for (i=1;i<=n;i++)
for (j=1;j<=m;j++)
{scanf("%d",&Mat[j][i]); St+=Mat[j][i];}
swap(n,m); swap(R,C);
}
int nrsub=(1<<m);
for (i=1;i<nrsub;i++)
{
l=0; nrbit=0; j=i; while(j){if(j&1){q[++l]=true; nrbit++;} else q[++l]=false; j>>=1;}
if (nrbit==C)
{
int S=St;
for (j=1;j<=m;j++)
if (q[j])
for (register int x=1;x<=n;x++)
S-=Mat[x][j];
for (j=1;j<=n;j++)
for (register int x=1;x<=m;x++)
v[j]+=Mat[j][x]*(!q[j]);
sort(v+1,v+n+1);
for (j=1;j<=R;j++)
S-=v[j];
if (S>RezFinal) RezFinal=S;
}
}
printf("%d",RezFinal);
return 0;
}