Pagini recente » Cod sursa (job #3289828) | Istoria paginii utilizator/florinc1996 | Cod sursa (job #2107531) | Arhiva de probleme | Cod sursa (job #8943)
Cod sursa(job #8943)
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
typedef int lin[1024];
int n, m, r, c, best;
int a[15][1024];
lin x;
void back(int lev, int mai, lin &sum)
{
int i,k=0;
lin s;
memcpy(s, sum, 4*m);
if (lev==n){
sort(s, s+m);
for (i=c; i<m; i++) k+=s[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-mai; i++)
if (mai>0 || i==n || r==0) back(i, mai, s);
}
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, x);
printf("%d\n", best);
return 0;
}