# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1245398 | nqknht | Kitchen (BOI19_kitchen) | C++20 | 149 ms | 95656 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;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |