Cod sursa(job #1036071)

Utilizator mvcl3Marian Iacob mvcl3 Data 18 noiembrie 2013 22:49:37
Problema Elimin Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 kb
#include <fstream>
#include <string.h>
#include <algorithm>
#define in "elimin.in"
#define out "elimin.out"
#define Max_Size 7300

std :: ifstream f(in);
std :: ofstream g(out);

int N, M, R, C, Best_Sum;
short A[Max_Size][Max_Size];

inline void Read_Data()
{
    f >> N >> M >> R >> C;

    for(int i = 1; i <= N; ++i)
        for(int j = 1; j <= M; ++j)
            f >> A[i][j];
}

inline void Solve()
{
    int sum[Max_Size];
    short is[Max_Size];

    for(int k = 0; k < (1 << N); ++k)
    {
        int nr_l = 0;
        for(int j = 1; j <= N; ++j)
            if((1 << j) & k)    is[j] = 1;
            else                is[j] = 0, ++nr_l;

        int my_sum = 0;
        if(nr_l == R)
        {
            memset(sum, 0, sizeof(sum));

            for(int i = 1; i <= N; ++i)
                for(int j = 1; j <= M; ++j)
                    sum[j] += A[i][j] * is[i];

            std :: sort(sum + 1, sum + M + 1);

            for(int i = M; i > C; --i)  my_sum += sum[i];

            Best_Sum = std :: max(Best_Sum, my_sum);
        }
    }
}

int main()
{
    Read_Data();
    Solve();

    g << Best_Sum << '\n';

    g.close();
    return 0;
}