Pagini recente » Cod sursa (job #384402) | Cod sursa (job #1413642) | Cod sursa (job #1562751) | Cod sursa (job #2318352) | Cod sursa (job #377929)
Cod sursa(job #377929)
#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];
}
}
inline void executa()
{
int s=SUMA,sume[MMAX];
for(int i=0;i<=M;i++)
sume[i]=0;
for(int i=1;i<=N;i++)
if(val[i])
s=s-SC[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;
}
inline void back(int k,int nul)
{
if(nul==C)
{
for(int i=k-1;i<=N;i++)
val[i]=1;
executa();
}
if(k==N)
return;
val[k]=0;
back(k+1,nul+1);
val[k]=1;
back(k+1,nul);
}
int main()
{
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
citire();
back(1,0);
printf("%d",REZULTAT);
return 0;
}