Submission #1224149

#TimeUsernameProblemLanguageResultExecution timeMemory
1224149thinknoexitKitchen (BOI19_kitchen)C++20
0 / 100
28 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; ll ans = 0; int sum = 0; for (int j = 1;j <= m;j++) { int b; cin >> b; sum += 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); } } } if (k > m) { cout << "Impossible\n"; return 0; } for (int i = 1;i <= n;i++) { if (sum < a[i]) { cout << "Impossible\n"; return 0; } if (a[i] < k) { cout << "Impossible\n"; return 0; } } for (int i = 1;i <= n;i++) { ans -= a[i]; int mn = 1e9; for (int j = k;j <= m;j++) { for (int l = a[i];l <= K;l++) { mn = min(mn, dp[j][l]); } } ans += mn; } 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...