Pagini recente » Cod sursa (job #1809247) | Cod sursa (job #804684) | Cod sursa (job #394820) | Cod sursa (job #1318014) | Cod sursa (job #1165418)
#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);
}
bool ok=1;
while (ok)
{
ok=0;
for (i=1;i<=n+1;i++)
{
if (q[i]) {q[i]=false;nrbit--;}
else {q[i]=true;ok=1;nrbit++;break;}
}
if (nrbit==C && !q[n+1])
{
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++)
{v[j]=0;
for (register int x=1;x<=m;x++)
v[j]+=Mat[j][x]*(!q[x]);}
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;
}