Submission #745845

#TimeUsernameProblemLanguageResultExecution timeMemory
745845vjudge1Kitchen (BOI19_kitchen)C++17
9 / 100
9 ms3028 KiB
#include <iostream> #include <vector> using namespace std; int const MAX_N = 300; int const MAX_M = 15; int const MAX_WORK = MAX_N * (MAX_M + 1); bool dp[MAX_WORK + 1][MAX_WORK + 1]; int main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); 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] = true; for (int const& chef : b) { int const delta_d = min(chef, n); int const delta_t = chef; for (int d = 600; d >= delta_d; d--) { for (int t = 600; t >= delta_t; t--) { dp[d][t] |= dp[d - delta_d][t - delta_t]; // if (dp[d][t]) { // cout << "dp[" << d << "][" << t << "] possible!\n"; // } } } } for (int t = total_work; t <= 600; t++) { for (int d = difference_work; d <= 600; d++) { if (dp[d][t]) { 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...