Pagini recente » Cod sursa (job #1041275) | Cod sursa (job #1940428) | Cod sursa (job #2094580) | Cod sursa (job #2702562) | Cod sursa (job #58192)
Cod sursa(job #58192)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
int n, m, r, c, best;
int a[15][1024], s[1024], x[1024];
void back(int lev, int mai)
{
int i,k=0;
if (lev==n){
if (mai) return;
memcpy(x, s, 4*m);
sort(x, x+m);
for (i=c; i<m; i++) k+=x[i];
if (k>best) best=k;
return;
}
for (i=0, mai--; i<m; i++) s[i]+=a[lev][i];
for (i=lev+1; i<=n; i++)
back(i, mai);
for (i=0; i<m; i++) s[i]-=a[lev][i];
}
int main()
{
freopen("elimin.in", "r", stdin);
freopen("elimin.out", "w", stdout);
int i,j,k;
scanf("%d %d %d %d", &n, &m, &r, &c);
if (m<n){
k=n; n=m; m=k;
k=r; r=c; c=k;
for (i=0; i<m; i++)
for (j=0; j<n; j++)
scanf("%d", a[j]+i);
} else {
for (i=0; i<n; i++)
for (j=0; j<m; j++)
scanf("%d", a[i]+j);
}
back(0, n-r);
printf("%d\n", best);
return 0;
}