Pagini recente » Cod sursa (job #664090) | Cod sursa (job #155628) | Cod sursa (job #1715514) | Cod sursa (job #2040433) | Cod sursa (job #1565633)
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,r,c;
bool select[8000];
int a[20][8000],f[20][8000],sum[8000],answer=0;
void check(){
int i,j,k=0,total=0;
for(i=0;i<n;i++){
if(select[i]==true)
continue;
for(j=0;j<m;j++)
f[k][j]=a[i][j];
k++;
}
for(j=0;j<m;j++){
sum[j]=0;
for(i=0;i<k;i++)
sum[j]+=f[i][j];
}
sort(sum,sum+m);
for(j=c;j<m;j++)
total+=sum[j];
if(total>answer)
answer=total;
}
void backtracking(int level,int prec){
int i;
if(level==r){
check();
return;
}
for(i=prec;i<n;i++){
select[i]=true;
backtracking(level+1,i+1);
select[i]=false;
}
}
int main(){
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
int i,j,temp;
scanf("%d%d%d%d",&n,&m,&r,&c);
if(n>m){
temp=n;
n=m;
m=temp;
temp=r;
r=c;
c=temp;
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%d",&a[j][i]);
}
else
for(i=0;i<n;i++)
for(j=0;j<m;j++)
scanf("%d",&a[i][j]);
backtracking(0,0);
printf("%d",answer);
return 0;
}