Submission #1004330

#TimeUsernameProblemLanguageResultExecution timeMemory
1004330LilPlutonKitchen (BOI19_kitchen)C++14
0 / 100
39 ms604 KiB
#include <bits/stdc++.h> /// author: LilPluton auuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu #define OPT ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define intt long long #define ll long long #define pb push_back #define arr array #define vll vector<int> #define fi first #define se second #define rep(i,j,k) for(int i = j; i <= k; ++i) #define all(a) a.begin(),a.end() #define pii pair<int,int> #define endll '\n' using namespace std; const ll INF = 1e18; const int N = 1e3 + 5; ll n, m, k, sum, chefsum; ll a[N], chef[N]; ll dp[N][N]; signed main() { cin >> n >> m >> k; for(ll i = 1; i <= n; ++i) cin >> a[i], sum += a[i]; sort(a + 1, a + n + 1); for(ll i = 1; i <= m; ++i) cin >> chef[i], chefsum += chef[i]; sort(chef + 1, chef + m + 1); if(m < k || a[1] < k) { cout << "Impossible" << endll; return 0; } ll ans = INF; dp[0][0] = 1; for (int i = 1; i <= m; ++i) { for (int j = N; j >= chef[i]; --j) { for (int f = 1; f <= m; ++f) { if (dp[f - 1][j - chef[i]]) { dp[f][j] = true; } } } } for(ll i = k; i <= m; ++i) { for(ll j = sum; j <= N; ++j) { if(dp[i][j]) { ans = min(ans, i - sum); break; } } } if(ans != INF) cout << ans << endll; else cout << "Impossible" << endll; 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...