Pagini recente » Cod sursa (job #3362230) | Cod sursa (job #3362609) | Cod sursa (job #3362162) | Cod sursa (job #3361909) | Cod sursa (job #3362610)
#include <fstream>
#include<queue>
#include<algorithm>
#include<cmath>
#include<vector>
#include<map>
#include<stack>
#include<climits>
#include<deque>
#include<unordered_map>
#include<unordered_set>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int main()
{
int n,m,l,c;
cin>>n>>m>>l>>c;
vector<vector<int>>v(n+1,vector<int>(m+1));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>v[i][j];
}
}
if(n<m){
vector<vector<int>>w(m+1,vector<int>(n+1));
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++)w[j][i]=v[i][j];
}
swap(n,m);
swap(l,c);
v=w;
}
long long ans=0;
for(int mk=0;mk<(1<<m);mk++){
if(__builtin_popcount(mk)!=c)continue;
long long s[1000];
for(int i=1;i<=n;i++){
s[i]=0;
for(int j=1;j<=m;j++){
if(!(mk&(1<<(j-1))))s[i]+=v[i][j];
}
}
sort(s+1,s+n+1);
long long cr=0;
for(int i=l+1;i<=n;i++)cr+=s[i];
ans=max(ans,cr);
}
cout<<ans<<"\n";
return 0;
}