제출 #1245398

#제출 시각아이디문제언어결과실행 시간메모리
1245398nqknhtKitchen (BOI19_kitchen)C++20
0 / 100
149 ms95656 KiB
#include <bits/stdc++.h>

#define ll long long
#define fi first
#define se second
#define len(s) (ll) s.size()

const ll I = 2e6 + 9;

using namespace std;

int n, m, k, a[I], b[I], sum = 0, nrt[309][90001];
bitset<90009> dp[309], dp1;

int main()
{
#define TN "bowling"
    if (fopen(TN ".inp", "r"))
    {
        freopen(TN ".inp", "r", stdin);
        freopen(TN ".out", "w", stdout);
    }
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> m >> k;
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        sum += a[i];
        if(a[i] < k)
        {
            cout << "Impossible\n";
            return 0;
        }
    }
    for (int i = 1; i <= m; i++)
        cin >> b[i];
    sort(b + 1, b + m + 1);
    int sav = 0;
    for (int i = 1; i <= m; i++)
        if (b[i] > k)
        {
            sav = i;
            break;
        }
    for (int i = sav; i <= m; i++)
        for (int j = 0; j <= i - sav; j++)
        {
            dp[j] |= 1;
            dp[j + 1] |= (dp[j] << b[i]);
        }
    for (int j = 0; j <= m - sav + 1; j++)
    {
        int cur = -1;
        for (int id = 90000; id >= 0; id--)
        {
            if (dp[j][id] == 1)
                cur = id;
            nrt[j][id] = cur;
        }
    }
    dp1 |= 1;
    for (int i = 1; i < sav; i++)
        dp1 |= (dp1 << b[i]);
    int rs = 2000000000;
    for (int i = 0; i <= 90000; i++)
    {
        if (dp1[i] == 0)
            continue;
        int att = k - (i / n);
        int mor = sum - i;
        for (int lay = att; lay <= m - sav + 1; lay++)
        {
            if (nrt[lay][mor] == -1)
                continue;
            rs = min(rs, (nrt[lay][mor] + i) - sum);
        }
    }
    rs = (rs > 1000000000 ? -1 : rs);
    if (rs == -1)
        cout << "Impossible\n";
    else
        cout << rs << "\n";
    return 0;
}

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

kitchen.cpp: In function 'int main()':
kitchen.cpp:20:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |         freopen(TN ".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
kitchen.cpp:21:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |         freopen(TN ".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...