# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
522777 | 2022-02-05T18:40:07 Z | LucaDantas | Kitchen (BOI19_kitchen) | C++17 | 1 ms | 204 KB |
#include <cstdio> constexpr int maxn = 310, inf = 0x3f3f3f3f; int a[maxn], b[maxn]; int dp[maxn*maxn]; int main() { int n, m, k; scanf("%d %d %d", &n, &m, &k); for(int i = 0; i < n; i++) scanf("%d", a+i); for(int i = 0; i < m; i++) scanf("%d", b+i); int soma = 0; for(int i = 0; i < n; i++) { soma += a[i]; if(a[i] < k) return puts("impossible"), 0; } auto max = [](int a, int b) { return a > b ? a : b; }; auto min = [](int a, int b) { return a < b ? a : b; }; for(int i = 0; i <= n*k; i++) dp[i] = inf; dp[0] = 0; for(int i = 0; i < m; i++) { for(int j = n*k - min(n, b[i]); j >= 0; j--) dp[j+min(n,b[i])] = min(dp[j+min(n,b[i])], dp[j] + b[i]); for(int j = n*k-1; j >= 0; j--) dp[j] = min(dp[j], dp[j+1]); } if(dp[n*k] == inf) puts("impossible"); else printf("%d\n", dp[n*k]-soma); }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 1 ms | 204 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Correct | 0 ms | 204 KB | Output is correct |
3 | Incorrect | 0 ms | 204 KB | Output isn't correct |
4 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 1 ms | 204 KB | Output is correct |
2 | Incorrect | 0 ms | 204 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |