Cod sursa(job #3362268)

Utilizator RegeleOu3433Calin V. Dragos Andrei RegeleOu3433 Data 5 august 2026 12:22:51
Problema Elimin Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.88 kb
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 7294 , MAXM = 15;
int sum[MAXN];
int main () {
    ifstream fin ( "elimin.in" );
    ofstream fout ( "elimin.out" );
    int m , n , r , c , li , co , pow , summ , maxs , i;

    fin >> m >> n >> r >> c;
    int mat[m][n];
    if ( m < n ) {
        for ( li = 0 ; li < m ; li++ )
            for ( co = 0 ; co < n ; co++ )
                fin >> mat[li][co];
        pow = ( 1 << m );
        maxs = -1;
        for ( i = 0 ; i < pow ; i++ )
            if ( __builtin_popcount ( i ) == r ) {
                for ( li = 0 ; li < m ; li++ )
                    for ( co = 0 ; co < n ; co++ )
                        if ( ( i & ( 1 << li ) ) == 0 )
                            sum[co] = sum[co] + mat[li][co];
                sort ( sum , sum + n );
                summ = 0;
                for ( co = c ; co < n ; co++ )
                    summ = summ + sum[co];
                maxs = max ( maxs , summ );
            }
        fout << maxs << '\n';
    }
    else {
        fout << 'a';
        for ( li = 0 ; li < m ; li++ )
            for ( co = 0 ; co < n ; co++ )
                fin >> mat[li][co];
        pow = ( 1 << n );
        maxs = -1;
        for ( i = 0 ; i < pow ; i++ )
            if ( __builtin_popcount ( i ) == c ) {
                for ( li = 0 ; li < m ; li++ )
                    for ( co = 0 ; co < n ; co++ )
                        if ( ( i & ( 1 << co ) ) == 0 )
                            sum[li] = sum[li] + mat[li][co];
                sort ( sum , sum + m );
                summ = 0;
                for ( li = r ; li < m ; li++ )
                    summ = summ + sum[li];
                maxs = max ( maxs , summ );
                for ( li = 0 ; li < m ; li++ )
                    sum[li] = 0;
            }
        fout << maxs << '\n';
    }
    return 0;
}