제출 #745833

#제출 시각아이디문제언어결과실행 시간메모리
745833vjudge1Kitchen (BOI19_kitchen)C++17
9 / 100
17 ms596 KiB
#include <iostream>
#include <vector>

using namespace std;

bool dp[601][601];

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

    int n, m, k;
    cin >> n >> m >> k;

    vector<int> a(n);
    int total_work = 0;

    for (int& x : a) {
        cin >> x;

        total_work += x;

        if (x < k) {
            cout << "Impossible\n";
            return 0;
        }
    }

    int const difference_work = n * k;

    vector<int> b(m);
    for (int& x : b)
        cin >> x;

    dp[0][0] = true;

    for (int const& chef : b) {
        int const delta_d = min(chef, n);
        int const delta_t = chef;

        for (int d = 600; d >= delta_d; d--) {
            for (int t = 600; t >= delta_t; t--) {
                dp[d][t] |= dp[d - delta_d][t - delta_t];

                // if (dp[d][t]) {
                //     cout << "dp[" << d << "][" << t << "] possible!\n";
                // }
            }
        }
    }

    for (int t = total_work; t <= 600; t++) {
        for (int d = difference_work; d <= 600; d++) {
            if (dp[d][t]) {
                cout << t - total_work << "\n";
                return 0;
            }
        }
    }

    cout << "Impossible\n";
}
#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...