Submission #1077375

#TimeUsernameProblemLanguageResultExecution timeMemory
1077375duckindogOlympiads (BOI19_olympiads)C++17
100 / 100
31 ms7212 KiB
#include <bits/stdc++.h>

using namespace std;

const int N = 500 + 10;
int n, k, c;
int a[N][10];

int32_t main() { 
  cin.tie(0)->sync_with_stdio(0);

  cin >> n >> k >> c;
  for (int i = 0; i < n; ++i) { 
    for (int j = 0; j < k; ++j) cin >> a[i][j];
  }

  auto sort = [&](vector<int> &v) {
    for (int i = 0; i < k; ++i) {
      for (int j = i + 1; j < v.size(); ++j)
        if (a[v[j]][i] > a[v[i]][i]) swap(v[i], v[j]);
    }
  };
  auto cal = [&](vector<int> &v) { 
    long long ret = 0;
    for (int i = 0; i < k; ++i) { 
      int ma = 0;
      for (const auto& j : v) ma = max(ma, a[j][i]);
      ret += ma;
    }
    return ret;
  };

  priority_queue<tuple<long long, int, vector<int>>> q;
  { //init
    vector<int> vt(n); iota(vt.begin(), vt.end(), 0);
    sort(vt);
    q.emplace(cal(vt), 0, vt);
  }

  while (q.size()) { 
    auto [value, p, vt] = q.top(); q.pop();
    if (!--c) { cout << value << "\n"; return 0; }
    if (vt.size() == k) continue;
    for (int i = p; i < k; ++i) { 
      vector<int> nxt = vt;
      nxt.erase(nxt.begin() + i);
      sort(nxt);
      q.emplace(cal(nxt), i, nxt);
    }
  }
}

Compilation message (stderr)

olympiads.cpp: In lambda function:
olympiads.cpp:19:29: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |       for (int j = i + 1; j < v.size(); ++j)
      |                           ~~^~~~~~~~~~
olympiads.cpp: In function 'int32_t main()':
olympiads.cpp:43:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   43 |     if (vt.size() == k) continue;
      |         ~~~~~~~~~~^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...