Pagini recente » Cod sursa (job #1295808) | Cod sursa (job #2954053) | Cod sursa (job #1807898) | Cod sursa (job #2188841) | Cod sursa (job #1333476)
#include<fstream>
#include<algorithm>
#include<cstring>
#define LL long long
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int M,N,R,C;
int A[400][20];
LL suma_matrice=0,suma_linii,suma_coloane;
LL k,nr_col,s_linie[400],sol=-1000000,i,j,nr;
int main() {
cin>>M>>N>>R>>C;
if(M>N){
for(i=1;i<=M;i++)
for(j=1;j<=N;j++)
cin>>A[i][j];
}
else{
for(i=1;i<=M;i++)
for(j=1;j<=N;j++)
cin>>A[j][i];
swap(N,M);
swap(R,C);
}
for(i=1;i<=M;i++)
for(j=1;j<=N;j++)
suma_matrice+=A[i][j];
nr=(1<<N);
for(k=0;k<nr;k++){
nr_col=0;
for(i=0;i<N;i++)
if(k&(1<<i)) nr_col++;
if(nr_col==C){
suma_linii=0;
suma_coloane=0;
for(i=1;i<=M;i++)
s_linie[i]=0;
for(i=1;i<=M;i++)
for(j=1;j<=N;j++)
if(k&(1<<(j-1)))
suma_coloane+=A[i][j];
else s_linie[i]+=A[i][j];
sort(s_linie+1,s_linie+M+1);
for(i=1;i<=R;i++)
suma_linii+=s_linie[i];
if(suma_matrice-suma_coloane-suma_linii>sol)
sol=suma_matrice-suma_coloane-suma_linii;
}
}
cout<<sol;
return 0;
}