Submission #925545

#TimeUsernameProblemLanguageResultExecution timeMemory
925545AidosKitchen (BOI19_kitchen)C++17
100 / 100
21 ms796 KiB

#include <bits/stdc++.h>

using namespace std;
const int inf = 1e9;

int n, m, k;

int dp[333*333];
int a[333];
int b[333];


void solve() {
    cin >> n >> m >> k;
    int s = 0;
    for(int i = 1; i <= n; i++) {
        cin >> a[i];
        if(a[i] < k) {
            cout << "Impossible\n";
            return;
        }
        s += a[i];
    }
    int t = 0;
    for(int i = 1; i <= m; i++) {
        cin >> b[i];
        t += b[i];
    }
    for(int i = 1; i <= t; i++) {
        dp[i] = -inf;
    }
    for(int i=1; i <= m; i++) {
        int c = min(b[i], n);
        for(int j = t; j >= b[i]; j--) {
            dp[j] = max(dp[j-b[i]] + c, dp[j]);
        }
    }
    for(int i = s; i <= t; i++) {
        if(dp[i] >= n * k) {
            cout << i-s << "\n";
            return;
        }
    }
    cout << "Impossible";
}

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

    int t = 1;
    //cin >> t;
    for(int i = 0; i < t; i++) {
        solve();
    }
}

#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...