Submission #422778

#TimeUsernameProblemLanguageResultExecution timeMemory
422778aryan12Kitchen (BOI19_kitchen)C++17
100 / 100
99 ms972 KiB
#include <bits/stdc++.h> using namespace std; #define int long long mt19937_64 RNG(chrono::steady_clock::now().time_since_epoch().count()); void Solve() { int n, m, k; cin >> n >> m >> k; vector<int> a(n + 1), b(m + 1); for(int i = 1; i <= n; i++) { cin >> a[i]; } for(int i = 1; i <= m; i++) { cin >> b[i]; } for(int i = 1; i <= n; i++) { if(a[i] < k) { cout << "Impossible\n"; return; } } int sum = 0; for(int i = 1; i <= m; i++) { sum += b[i]; } vector<int> dp(sum + 1, INT_MIN); dp[0] = 0; for(int i = 1; i <= m; i++) { for(int j = sum - b[i]; j >= 0; j--) { dp[j + b[i]] = max(dp[j + b[i]], dp[j] + min(n, b[i])); } } int min_req = 0; for(int i = 1; i <= n; i++) { min_req += a[i]; } /*for(int i = 0; i <= sum; i++) { cout << dp[i] << " "; } cout << "\n";*/ for(int i = min_req; i <= sum; i++) { if(dp[i] >= n * k) { cout << i - min_req << "\n"; return; } } cout << "Impossible\n"; } int32_t main() { ios::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...