# | Submission time | Handle | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
783900 | 2023-07-15T12:05:21 Z | TheOpChicken | Kitchen (BOI19_kitchen) | C++17 | 85 ms | 97192 KB |
#include <iostream> using namespace std; const long long maxN = 305, inf = 1e15; int barr[maxN], dp[maxN][555555]; int main(){ int n, m, k; cin >> n >> m >> k; int total = 0; for (int i = 0; i < n; i++){ int a; cin >> a; if (a < k){ cout << "Impossible" << endl; return 0; } total += a; } for (int i = 0; i < m; i++) cin >> barr[i]; for (int i = 0; i < m; i++){ for (int j = 0; j < maxN*maxN; j++) dp[i][j] = -inf; } dp[0][barr[0]] = min(n, barr[0]); for (int i = 1; i < m; i++){ for (int j = 0; j < maxN*maxN; j++){ dp[i][j] = dp[i-1][j]; if (barr[i] <= j){ if (dp[i-1][j-barr[i]] == -inf) continue; dp[i][j] = max(dp[i][j], dp[i-1][j-barr[i]] + min(n, barr[i])); } } } bool pos = 0; int ans; for (int i = total; i < maxN*maxN; i++){ if (dp[m-1][i] >= n*k){ pos = 1; ans = i; break; } } if (!pos) cout << "Impossible" << endl; else cout << ans-total << endl; }
Compilation message
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 980 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 980 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 85 ms | 97192 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 16 ms | 15064 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 980 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |