Submission #1108230

#TimeUsernameProblemLanguageResultExecution timeMemory
1108230AcanikolicKitchen (BOI19_kitchen)C++14
100 / 100
44 ms1736 KiB
#include <bits/stdc++.h> #define int long long #define pb push_back #define F first #define S second using namespace std; const int N = 2e5 + 10; const int mod = 1e9 + 7; const int inf = 1e18; signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m,k; cin >> n >> m >> k; vector<int>a(n + 1); int sa = 0; for(int i = 1; i <= n; i++) { cin >> a[i]; sa += a[i]; if(a[i] < k) { cout << "Impossible"; return 0; } } vector<int>b(m + 1); int sum = 0; for(int i = 1; i <= m; i++) { cin >> b[i]; sum += b[i]; } vector<int>dp(sum + 1,-inf); dp[0] = 0; for(int i = 1; i <= m; i++) { vector<int>ndp = dp; for(int j = b[i]; j <= sum; j++) { ndp[j] = max(ndp[j],dp[j - b[i]] + min(b[i],n)); } dp = ndp; } int res = -1; for(int i = sum; i >= sa; i--) { if(dp[i] >= n * k) res = i - sa; } if(res == -1) { cout << "Impossible"; }else { cout << res; } 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...