Cod sursa(job #2675788)

Utilizator Asgari_ArminArmin Asgari Asgari_Armin Data 22 noiembrie 2020 15:55:15
Problema Elimin Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 8000;
vector <int> v[NMAX + 1];
long long s[NMAX + 1];

static inline long long max(long long a, long long b){
  return a < b ? b : a;
}

int main() {
  long long n, m, r, c, i, j, a, col;
  long long sum, maxx;
  fin >> n >> m >> r >> c;
  for( i = 1; i <= n; ++i ){
    v[i].push_back(0);
    for( j = 1; j <= m; ++j ){
      fin >> a;
      v[i].push_back(a);
    }
  }
  maxx = 0;
  for( i = 0; i < (1 << n); ++i ){
    if( __builtin_popcount(i) == r ){
      sum = 0;
      for( j = 0; j < n; ++j )
        if( (i & (1 << j)) == 0 ){
          for( col = 1; col <= m; ++col )
            s[col] += v[j + 1][col];
        }
      sort(s + 1, s + 1 + m);
      for( j = 1; j <= m; ++j ){
        sum += (j > c ? s[j] : 0);
        s[j] = 0;
      }
      maxx = max(maxx, sum);
    }
  }
  fout << maxx;
  return 0;
}