Submission #745868

#TimeUsernameProblemLanguageResultExecution timeMemory
745868vjudge1Kitchen (BOI19_kitchen)C++17
100 / 100
26 ms596 KiB
#include <iostream> #include <vector> using namespace std; int const MAX_N = 300; int const MAX_M = 300; int const MAX_WORK = MAX_N * (MAX_M + 1); int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); vector<int> dp(MAX_WORK + 1, -1); int n, m, k; cin >> n >> m >> k; vector<int> a(n); int total_work = 0; for (int& x : a) { cin >> x; total_work += x; if (x < k) { cout << "Impossible\n"; return 0; } } int const difference_work = n * k; if (total_work > MAX_WORK || difference_work > MAX_WORK) { cout << "Impossible\n"; return 0; } vector<int> b(m); for (int& x : b) cin >> x; dp[0] = 0; for (int const& chef : b) { int const delta_d = min(chef, n); int const delta_t = chef; for (int t = MAX_WORK; t >= delta_t; t--) { if (dp[t - delta_t] == -1) continue; int const new_d = dp[t - delta_t] + delta_d; dp[t] = max(dp[t], new_d); } } for (int t = total_work; t <= MAX_WORK; t++) { if (dp[t] >= difference_work) { cout << t - total_work << "\n"; return 0; } } cout << "Impossible\n"; }
#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...