Submission #1151382

#TimeUsernameProblemLanguageResultExecution timeMemory
1151382LudisseyKitchen (BOI19_kitchen)C++20
100 / 100
38 ms1096 KiB
#include <bits/stdc++.h>
#define sz(a) (int)a.size()
#define all(a) a.begin(), a.end()
#define rall(a) a.rbegin(), a.rend()
#define int long long
using namespace std;

const int MAXB=305;

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
    int n,m,K; cin >> n >> m >> K;
    priority_queue<pair<int,int>> pq;
    vector<int> a(n);
    vector<int> b(m);
    int sum=0;
    for (int i = 0; i < n; i++) { cin >> a[i]; sum+=a[i]; }
    for (int i = 0; i < m; i++) { cin >> b[i]; }
    vector<int> dp(MAXB*m,-1);
    dp[0]=0;
    for (int i = 0; i < m; i++)
    {
        for (int j = sz(dp)-1; j >= 0; j--)
        {
            if(dp[j]==-1) continue;
            dp[j+b[i]]=max(dp[j]+min(b[i],n), dp[j+b[i]]);
        }
    }
    int ans=-1;
    for (int i = sum; i < sz(dp); i++)
    {
        if(dp[i]>=K*n){
            ans=i-sum;
            break;
        }
    }
    if(*min_element(all(a))<K) ans=-1;
    if(ans==-1) cout << "Impossible\n";
    else cout << ans << "\n";
    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...