Submission #1108227

#TimeUsernameProblemLanguageResultExecution timeMemory
1108227AcanikolicKitchen (BOI19_kitchen)C++14
21 / 100
1 ms564 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; if(m < n) { cout << "Impossible"; return 0; } 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 = inf; for(int i = sa; i <= sum; i++) { if(dp[i] >= n * k) res = min(res,i - sa); } assert(res != inf); 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...