Submission #745961

#TimeUsernameProblemLanguageResultExecution timeMemory
745961vjudge1Kitchen (BOI19_kitchen)C++17
9 / 100
13 ms468 KiB
#include <bits/stdc++.h> using namespace std; const int MAXN = 301; int dp[MAXN][MAXN]; int main() { ios::sync_with_stdio(0); cin.tie(0); int n, m, k; cin >> n >> m >> k; vector<int> a(n+1), b(n+1); for (int i = 1; i <= n; i++) { cin >> a[i]; } for (int j = 1; j <= m; j++) { cin >> b[j]; } int ans = INT_MAX; for (int bits = 0; bits < (1 << m); bits++) { int x = bits<<1; priority_queue<int> pq; for (int i = 1; i <= n; i++) { pq.push(a[i]); } multiset<int> chefs; for (int i = 1; i <= m; i++) { if ((x>>i)&1) { chefs.insert(b[i]); } } bool possible = true; while (!pq.empty() && !chefs.empty()) { bool good = false; int left = pq.top(); pq.pop(); if (chefs.size() < k || left < k) { possible = false; break; } while (left && !chefs.empty()) { vector<int> used; for (int u : chefs) { if (left) { left--; used.push_back(u); } } for (int u : used) { chefs.erase(chefs.find(u)); if (u != 1) chefs.insert(u-1); } } if (left) { possible = false; break; } } if (possible && pq.empty()) { int res = 0; for (int u : chefs) res += u; ans = min(ans, res); } } if (ans == INT_MAX) cout << "Impossible\n"; else cout << ans << "\n"; return 0; }

Compilation message (stderr)

kitchen.cpp: In function 'int main()':
kitchen.cpp:38:21: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   38 |    if (chefs.size() < k || left < k) {
      |        ~~~~~~~~~~~~~^~~
kitchen.cpp:35:9: warning: unused variable 'good' [-Wunused-variable]
   35 |    bool good = false;
      |         ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...