Pagini recente » Cod sursa (job #2738870) | Cod sursa (job #2130747) | Cod sursa (job #1890817) | Cod sursa (job #469246) | Cod sursa (job #1555656)
#include <iostream>
#include <stdio.h>
#include <algorithm>
using namespace std;
int mat[15][8000];
int cpy[15][8000];
int sum[8000];
int sels[16];
int ls,cs,r,c,val;
int k,maxim,s;
void printmat(){
int i,j;
for(i=0;i<ls;i++){
for(j=0;j<cs;j++){
printf("%d ", mat[i][j]);
}
printf("\n");
}
}
void matcpy(){
int i,j;
k=0;
for(i=0;i<ls;i++){
if(sels[i]==1){
continue;
}
for(j=0;j<cs;j++){
cpy[k][j]=mat[i][j];
}
k++;
}
}
void sum_col (){
int i,j;
for(j=0;j<cs;j++){
sum[j]=0;
for(i=0;i<k;i++){
sum[j]+=cpy[i][j];
}
}
}
void gen_comb(int level,int prec){
int i,j;
if(level==r){
if(val==r){
matcpy();
sum_col();
sort(sum,sum+cs);
s=0;
for(j=c;j<cs;j++){
s+=sum[j];
}
if(s>maxim){
maxim=s;
}
}
return;
}
for(i=prec;i<ls;i++){
sels[i]=1;
val++;
gen_comb(level+1,i+1);
sels[i]=0;
val--;
}
}
int main(){
int i,j,t;
freopen("elimin.in","r",stdin);
freopen("elimin.out","w",stdout);
scanf("%d%d%d%d",&ls,&cs,&r,&c);
if(ls>cs ){
t=ls; ls=cs; cs=t;
t=r; r=c; c=t;
for(i=0;i<cs;i++){
for(j=0;j<ls;j++){
scanf("%d",&mat[j][i]);
}
}
}else{
for(i=0;i<ls;i++){
for(j=0;j<cs;j++){
scanf("%d",&mat[i][j]);
}
}
}
// printmat();
gen_comb(0,0);
printf("%d",maxim);
return 0;
}