Cod sursa(job #58192)

Utilizator goguGogu Marian gogu Data 4 mai 2007 16:55:47
Problema Elimin Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.09 kb
#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;
}