제출 #567201

#제출 시각아이디문제언어결과실행 시간메모리
567201shrimbKitchen (BOI19_kitchen)C++17
100 / 100
294 ms213900 KiB
#pragma GCC optimize ("Ofast")
#pragma GCC target ("avx,avx2,fma")

#include"bits/stdc++.h"
using namespace std;

#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;

template<class x>
using ordered_set = tree<x, null_type,less<x>, rb_tree_tag,tree_order_statistics_node_update>;

#define int long long
#define endl '\n'
#define mod 1000000007
//\
#define mod 1686876991

const int maxn = 301;

int n, m, k, cntAK, cntBN, smA, smB, ans = 1e9;

int A[maxn], B[maxn];
int dp[maxn][maxn*maxn];

int rec (int i, int sm) {
    if (sm == 0) return 0;
    if (i == m || sm < 0) return -INT_MAX;
    if (dp[i][sm] != -1) return dp[i][sm];
    return dp[i][sm] = max(rec(i + 1, sm), rec(i + 1, sm - B[i]) + min(B[i], n));
}

signed main () {
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> m >> k;
    for (int i = 0 ; i < n ; i++) {
        cin >> A[i];
        smA += A[i];
        if (A[i] < k) cntAK++;
    }
    for (int i = 0 ; i < m ; i++) {
        cin >> B[i];
        cntBN += min(n, B[i]);
        smB += B[i];
    }
    if (m < k || smB < smA || cntBN/n < k || cntAK) {
        // assert(0);
        cout << "Impossible\n";
        return 0;
    }
    memset(dp, -1, sizeof dp);
    for (int i = smA ; i < maxn * maxn ; i++) {
        if (rec(0, i) / n >= k) {
            ans = min(ans, i - smA);
            break;
        }
    }
    cout << ans << endl;
}


/*

impossible:

- M < K
- sum of B < sum of A
- the number of (B >= N) is < K
- theres an A which is < K

*/

컴파일 시 표준 에러 (stderr) 메시지

kitchen.cpp:17:1: warning: multi-line comment [-Wcomment]
   17 | //\
      | ^
#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...