제출 #1166076

#제출 시각아이디문제언어결과실행 시간메모리
1166076fryingducKitchen (BOI19_kitchen)C++20
0 / 100
11 ms328 KiB
#include "bits/stdc++.h" using namespace std; #ifdef duc_debug #include "bits/debug.h" #else #define debug(...) #endif const int maxn = 305; int n, m, k, a[maxn], b[maxn]; int diff[maxn]; void solve() { cin >> n >> m >> k; for (int i = 1; i <= n; ++i) { cin >> a[i]; } for (int i = 1; i <= m; ++i) { cin >> b[i]; } sort(b + 1, b + m + 1); int rm = 0; for (int i = 1; i <= n; ++i) { if (a[i] < k) { cout << "impossible"; return; } rm += a[i]; } int res = 1e9; for (int l = 1; l <= m; ++l) { int sum = 0; for (int r = l; r <= m; ++r) { sum += b[r]; auto calc = [&](int l, int r) { if (r - l + 1 < k) return 0; for (int i = l; i <= r; ++i) diff[i] = 0; int prv = 0, res = 0; for (int i = l; i <= r - k + 1; ++i) { prv += diff[i]; res += (b[i] - prv); diff[i + k] -= b[i] - prv; prv += b[i] - prv; } return res; }; int x = calc(l, r); debug(l, r, x); if (x >= n and sum - rm >= 0) { res = min(res, sum - rm); } } } if (res == 1e9) cout << "impossible"; else cout << res; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); solve(); return 0; }
#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...