Submission #493033

# Submission time Handle Problem Language Result Execution time Memory
493033 2021-12-10T03:30:58 Z wiwiho Kitchen (BOI19_kitchen) C++14
31 / 100
100 ms 262148 KB
#include <bits/stdc++.h>

#define printv(a, b) {\
    for(auto pv : a) b << pv << " ";\
    b << "\n";\
}

using namespace std;

typedef long long ll;

const ll MAX = INT_MAX;

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

int n, m, k;
vector<int> a;
vector<int> b;
ll sa = 0;

const int SZ = 300;

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

    cin >> n >> m >> k;
    a.resize(n + 1);
    b.resize(m + 1);

    ll sb = 0;
    for(int i = 1; i <= n; i++) cin >> a[i], sa += a[i];
    for(int i = 1; i <= m; i++) cin >> b[i], sb += b[i];
    sort(a.begin() + 1, a.end(), greater<>());
    sort(b.begin() + 1, b.end(), greater<>());
    
    if(k > m || sa > sb){
        nosol();
    }

    for(int i = 1; i <= n; i++) if(a[i] < k) nosol();

    vector<vector<ll>> dp(m + 1, vector<ll>((m + 1) * SZ + 10, -MAX));
    dp[0][0] = 0;
    for(int i = 1; i <= m; i++){
        vector<vector<ll>> dp2 = dp;
        
        for(int j = 0; j < i; j++){
            for(int s = 0; s <= m * SZ; s++){
                
                ll tmp = MAX;
                if(j + 1 < k) tmp = dp[j][s];
                else if(j + 1 == k) tmp = dp[j][s] + k * b[i];
                else tmp = dp[j][s] + b[i];
                
                dp2[j + 1][s + b[i]] = max(dp2[j + 1][s + b[i]], tmp);
            }
        }

        dp.swap(dp2);
    }

    ll ans = MAX;
    for(int i = k; i <= m; i++){
        for(int j = sa; j <= m * SZ; j++){
            if(dp[i][j] > n * k) ans = min(ans, j - sa);
        }
    }
    if(ans == MAX) nosol();
    cout << ans << "\n";

    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 332 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 332 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 3 ms 1556 KB Output is correct
10 Correct 3 ms 1564 KB Output is correct
11 Correct 3 ms 1524 KB Output is correct
12 Correct 3 ms 1524 KB Output is correct
13 Correct 3 ms 1556 KB Output is correct
# Verdict Execution time Memory Grader output
1 Runtime error 100 ms 262148 KB Execution killed with signal 9
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 50 ms 8348 KB Output is correct
2 Incorrect 42 ms 8336 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 1 ms 460 KB Output is correct
2 Correct 0 ms 332 KB Output is correct
3 Correct 1 ms 332 KB Output is correct
4 Correct 0 ms 332 KB Output is correct
5 Correct 0 ms 332 KB Output is correct
6 Correct 0 ms 204 KB Output is correct
7 Correct 0 ms 204 KB Output is correct
8 Correct 0 ms 204 KB Output is correct
9 Correct 3 ms 1556 KB Output is correct
10 Correct 3 ms 1564 KB Output is correct
11 Correct 3 ms 1524 KB Output is correct
12 Correct 3 ms 1524 KB Output is correct
13 Correct 3 ms 1556 KB Output is correct
14 Runtime error 100 ms 262148 KB Execution killed with signal 9
15 Halted 0 ms 0 KB -