Cod sursa(job #2630230)

Utilizator pregoliStana Andrei pregoli Data 24 iunie 2020 19:27:01
Problema Elimin Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.21 kb
#include <bits/stdc++.h>
#define newline '\n'
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
///***********************
const int NMAX = 15, MMAX = 7300;
int matrix[NMAX][MMAX], sumCol[MMAX];
int n, m, r, c, ans;

void read()
{
    fin >> n >> m >> r >> c;
    for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++)
            if (n > m)
                fin >> matrix[j][i];
            else
                fin >> matrix[i][j];
    if (n > m)
    {
        swap(n, m);
        swap(r, c);
    }
}

void solve()
{
    for (int state = 0; state < (1 << n); state++)
    {
        if (__builtin_popcount(state) != r)
            continue;
        fill(sumCol, sumCol + m, 0);
        for (int i = 0; i < n; i++)
        {
            if (!((1 << i) & state))
            {
                for (int j = 0; j < m; j++)
                    sumCol[j] += matrix[i][j];
            }
        }
        sort(sumCol, sumCol + m);
        int sum = 0;
        for (int j = c; j < m; j++)
            sum += sumCol[j];
        ans = max(ans, sum);
    }
    fout << ans << newline;
}

int main()
{
    read();
    solve();
    fout.close();
    return 0;
}