Pagini recente » Cod sursa (job #2795522) | Cod sursa (job #3275265) | Cod sursa (job #2092683) | Cod sursa (job #2846047) | Cod sursa (job #136267)
Cod sursa(job #136267)
#include<stdio.h>
#include<stdlib.h>
#define N 700
#define Kmax 15
int compara(const void *a,const void*b){
return *(int*)a-*(int*)b;
}
int main(){
int t[N][N],n,m,r,c,max=0,mmax,i,j,k=0,sum[N],aux,y,ss=0,rr=0,v[Kmax],pp;
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&m,&n,&r,&c);
for (i=1;i<=m;++i){
for (j=1;j<=n;++j){
scanf("%d",&t[i][j]);
//v1[i]+=t[i][j];
}
}
if (m<=15){
aux=m;
m=n;
n=aux;
aux=r;
r=c;
c=aux;
}
pp=2<<m-1;
for (i=0;i<=pp-1;++i){
y=0;ss=0;rr=0;
for (j=1;j<=m+5;++j)
v[j]=0;
for (j=1;j<=n+5;++j)
sum[j]=0;
j=i;
while (j){
++y;
v[y]=j%2;
j/=2;
}
for (j=1;j<=m;++j){
if (v[j]==0){
for (k=1;k<=n;++k)
sum[k]+=t[j][k];
++ss;
}
}
if (ss==n-r){
qsort(sum,n+1,sizeof(sum[0]),compara);
//for (j=1;j<=n;++j)
// printf("%d ",sum[j]);
//printf("\n");
for (j=c+1;j<=n;++j)
rr+=sum[j];
if (rr>max)
max=rr;
}
}
printf("%d\n",max);
fclose(stdin);
fclose(stdout);
return 0;
}