Submission #1166099

#TimeUsernameProblemLanguageResultExecution timeMemory
1166099fryingducKitchen (BOI19_kitchen)C++20
0 / 100
73 ms107848 KiB
#include "bits/stdc++.h" using namespace std; #ifdef duc_debug #include "bits/debug.h" #else #define debug(...) #endif const int maxn = 305; const int N = 9e4 + 6; int n, m, k, a[maxn], b[maxn]; int f[maxn][N]; void solve() { cin >> n >> m >> k; for (int i = 1; i <= n; ++i) { cin >> a[i]; } int s = 0; for (int i = 1; i <= m; ++i) { cin >> b[i]; s += b[i]; } sort(b + 1, b + m + 1); int rm = 0; for (int i = 1; i <= n; ++i) { if (a[i] < k) { cout << "impossible"; return; } rm += a[i]; } memset(f, -0x3f, sizeof(f)); f[0][0] = 0; for (int i = 1; i <= m; ++i) { for (int j = 0; j <= s; ++j) { f[i][j] = f[i - 1][j]; } for (int j = b[i]; j <= s; ++j) { f[i][j] = max(f[i][j], f[i - 1][j - b[i]] + min(n, b[i])); } } for (int i = rm; i <= s; ++i) { if (f[m][i] >= n * k) { cout << i - rm; return; } } cout << "impossible"; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); 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...