Submission #1324113

#TimeUsernameProblemLanguageResultExecution timeMemory
1324113edoKitchen (BOI19_kitchen)C++20
100 / 100
25 ms1128 KiB
#include <bits/stdc++.h>

using namespace std;
using ll = long long;

void die() {
    cout << "Impossible\n";
    exit(0);
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, k;
    cin >> n >> m >> k;
    
    if(m < k) 
        die();

    vector<int> A(n), B(m);
    int total = 0;
    for(int& i : A) {
        cin >> i;
        if(i < k) 
            die();
        total += i;
    }
    for(int& i : B) cin >> i;

    const int nax = 300 * 300 + 5;
    ll dp[nax];
    memset(dp, -1, sizeof(dp));
    
    dp[0] = 0;
    for(int i = 0; i < m; i++) {
        for(int j = nax - B[i]; ~j; --j) {
            if(dp[j] != -1) {
                dp[j + B[i]] = max(dp[j + B[i]], dp[j] + min(n, B[i]));
            }
        }
    }

    int N = n * k;
    for(int i = total; i < nax; i++) {
        if(dp[i] >= N) {
            cout << i - total;
            return 0;
        }
    }
    die();
    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...