Pagini recente » Cod sursa (job #3317884) | Cod sursa (job #3325021) | Cod sursa (job #1408597) | Monitorul de evaluare | Cod sursa (job #3303928)
#include <fstream>
#include <algorithm>
#include <vector>
#include <climits>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
const int NMAX=7294;
int n, m, r, c, mat[NMAX+2][NMAX+2];
int main(){
cin>>n>>m>>r>>c;
if(n<=m){
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mat[i][j];
}
}
}
else{
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>mat[j][i];
}
}
swap(n, m);
swap(r, c);
}
int Max=INT_MIN;
for(int mask=1;mask<(1<<n);mask++){
vector<int> s(m+1);
int bits=0;
for(int bit=0;bit<n;bit++){
if((mask&(1<<bit))>0){
bits++;continue;
}
for(int j=1;j<=m;j++){
s[j]+=mat[bit+1][j];
}
}
if(bits==r){
sort(s.begin(), s.end());
int sum=0;
for(int j=c+1;j<=m;j++){
sum+=s[j];
}
Max=max(sum, Max);
}
}
cout<<Max;
}