제출 #1224159

#제출 시각아이디문제언어결과실행 시간메모리
1224159thinknoexitKitchen (BOI19_kitchen)C++20
0 / 100
22 ms580 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; const int N = 303; const int K = 300; int a[N]; int dp[N][N]; int main() { cin.tie(nullptr)->sync_with_stdio(false); memset(dp, 0x3f, sizeof dp); int n, m, k; cin >> n >> m >> k; for (int i = 1;i <= n;i++) { cin >> a[i]; } dp[0][0] = 0; for (int j = 1;j <= m;j++) { int b; cin >> b; for (int l = j - 1;l >= 0;l--) { for (int i = K;i >= 0;i--) { dp[l + 1][min(K, i + b)] = min(dp[l + 1][min(K, i + b)], dp[l][i] + b); } } } int mn = min(m, *min_element(a + 1, a + 1 + n)); int mx = *max_element(a + 1, a + 1 + n); if (mn < k) { cout << "Impossible\n"; return 0; } int res = 1e9; for (int j = k;j <= mn;j++) { for (int l = mx;l <= K;l++) { res = min(res, dp[j][l]); } } if (res == 1e9) { cout << "Impossible\n"; return 0; } ll ans = 0; for (int i = 1;i <= n;i++) { ans -= a[i]; ans += res; } cout << ans << '\n'; return 0; }
#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...