Pagini recente » Cod sursa (job #1067837) | Cod sursa (job #1282546) | Cod sursa (job #1512061) | Cod sursa (job #1239728) | Cod sursa (job #377918)
Cod sursa(job #377918)
#include <cstdio>
#include <algorithm>
#define NMAX 551
#define MMAX 552
int M,N,R,C;
int A[MMAX][NMAX];
int SC[NMAX];
int e[NMAX-1];
bool val[NMAX];
int SUMA;
int REZULTAT=0;
void citire()
{
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",&A[i][j]);
SC[j]=SC[j]+A[i][j];
SUMA=SUMA+A[i][j];
}
}
void executa()
{
int s=SUMA,sume[MMAX];
for(int i=0;i<=M;i++)
sume[i]=0;
for(int i=1;i<=e[0];i++)
s=s-SC[e[i]];
for(int i=1;i<=M;i++)
for(int j=1;j<=N;j++)
if(!val[j])
sume[i]=sume[i]+A[i][j];
std::sort(sume,sume+M+1);
for(int i=1;i<=R;i++)
s=s-sume[i];
if(s>REZULTAT)
REZULTAT=s;
}
void back()
{
if(e[0]==C)
{
executa();
e[0]--;
return;
}
for(int i=e[e[0]]+1;i<=N;i++)
{
val[i]=1;
e[++e[0]]=i;
back();
val[i]=0;
}
e[0]--;
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
citire();
back();
printf("%d",REZULTAT);
return 0;
}