Cod sursa(job #2710276)

Utilizator MateiAruxandeiMateiStefan MateiAruxandei Data 22 februarie 2021 12:02:16
Problema Elimin Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.12 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("elimin.in");
ofstream fout("elimin.out");

long long s[8000];
int mat[7295][16];

int main()
{
    int n, m, r, c;
    fin >> n >> m >> r >> c;
    for(int i = 1; i <= n; ++i)
        for(int j = 1; j <= m; ++j)
            if(n >= m)
                fin >> mat[i][j];
            else fin >> mat[j][i];


    int minn = min(n, m);
    if(minn != m)
    {
        swap(n, m);
        swap(r, c);
    }

    long long maxx = 0;
    for(int msk = 0; msk < (1 << m); ++msk)
        if(__builtin_popcount(msk) == c)
        {
            for(int i = 1; i <= n; ++i)
                s[i] = 0;
            long long sum = 0;
            for(int j = 1; j <= m; ++j){
                if((1 << (j - 1)) & msk)
                    continue;
                for(int i = 1; i <= n; ++i)
                    s[i] += mat[i][j], sum += mat[i][j];
            }
            sort(s + 1, s + n + 1);
            for(int i = 1; i <= r; ++i)
                sum -= s[i];
            maxx = max(maxx, sum);
        }
    fout << maxx << '\n';
    return 0;
}