Cod sursa(job #2628721)

Utilizator PatrickCplusplusPatrick Kristian Ondreovici PatrickCplusplus Data 17 iunie 2020 11:10:22
Problema Elimin Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("elimin.in");
ofstream fout("elimin.out");
int n, m, r, c, matrix[20][8005], s[8005], maxim;
int b(int n)
{
  int cnt = 0;
  while(n) {
    n &= n - 1;
    cnt++;
  }
  return cnt;
}
int main()
{
    fin >> n >> m >> r >> c;
    for (int i = 0; i < n; ++i)
        for (int j = 0; j < m; ++j)
            if (n <= m) fin >> matrix[i][j];
            else fin >> matrix[j][i];
    if (n > m)
        swap(n, m), swap(r, c);
    for (int stare = 0; stare < (1 << n); ++stare)
    {
        if (b(stare) != r) continue;
        for (int j = 0; j < m; ++j) s[j] = 0;
        for (int i = 0; i < n; ++i)
        {
            int bit = (stare >> i) & 1;
            if (bit == 0)
            {
                for (int j = 0; j < m; ++j)
                {
                    s[j] += matrix[i][j];
                }
            }
        }
        sort(s, s + m);
        int sum = 0;
        for (int j = c; j < m; ++j)
        {
            sum += s[j];
        }
        if (sum > maxim) maxim = sum;
    }
    fout << maxim;

}