Submission #1264093

#TimeUsernameProblemLanguageResultExecution timeMemory
1264093rtriOlympiads (BOI19_olympiads)C++20
44 / 100
2094 ms21356 KiB
#include <bits/stdc++.h>
using namespace std;

int n, k, c;
vector<vector<int>> players;

vector<int> solve(bitset<500> &used, int left, int first) {
  if (left == 0) {
    int score = 0;
    for (int i = 0; i < k; i++) {
      int best = 0;
      for (int j = 0; j < n; j++)
        if (used[j])
          best = max(best, players[j][i]);
      score += best;
    }
    return {score};
  }

  vector<int> ans;
  for (int i = first; i < n; i++) {
    used[i] = 1;
    for (int subans : solve(used, left - 1, i + 1))
      ans.push_back(subans);
    used[i] = 0;
  }

  return ans;
}

int main() {
  cin >> n >> k >> c;

  for (int i = 0; i < n; i++) {
    vector<int> player(k);
    for (int j = 0; j < k; j++)
      cin >> player[j];
    players.push_back(player);
  }

  bitset<500> sub(0);
  vector<int> scores = solve(sub, k, 0);
  sort(scores.rbegin(), scores.rend());

  cout << scores[c - 1] << endl;

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...