Pagini recente » Borderou de evaluare (job #1516767) | Cod sursa (job #3362203) | Cod sursa (job #3362205) | Cod sursa (job #3362253) | Cod sursa (job #3362407)
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;
ifstream cin("elimin.in");
ofstream cout("elimin.out");
int X[20][8005];
int M[50000];
int S[8005];
int main() {
int n, m, r, c, maxim=0;
cin>>n>>m>>r>>c;
if (m<n) {
swap(n, m);
swap(r, c);
}
for (int i=1; i<=n; i++) {
for (int j=1; j<=m; j++) {
cin>>X[i][j];
}
}
for (int v=0; v<(1<<n); v++) {
int val=1, b=0, sum=0;
while (val<v) {
if ((v/val)%2==1) b++;
val=val*2;
}
if (b!=n-r) continue;
val=0;
for (int j=1; j<=m; j++) {
for (int i=1; i<=n; i++) {
if ((v/(1<<(i-1)))%2==1) val=val+X[i][j];
}
S[j]=val;
val=0;
}
sort(S+1, S+m+1);
for (int i=m; i>=m-c; i--) sum=sum+S[i];
maxim=max(maxim, sum);
}
cout<<maxim;
}