Submission #584278

#TimeUsernameProblemLanguageResultExecution timeMemory
584278talant117408Kitchen (BOI19_kitchen)C++17
0 / 100
1092 ms3668 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair <int, int> pii; typedef pair <ll, ll> pll; #define long unsigned long #define pb push_back #define mp make_pair #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define lb lower_bound #define ub upper_bound #define sz(v) int((v).size()) #define do_not_disturb ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); #define endl '\n' vector <bitset <90001>> dp(301); void impossible() { cout << "Impossible" << endl; exit(0); } void solve() { int n, m, k; cin >> n >> m >> k; vector <int> a(n), b(m); for (auto &to : a) cin >> to; for (auto &to : b) cin >> to; int dishes = 0, chefs = 0; for (auto to : a) dishes += to; for (auto to : b) chefs += to; sort(all(b)); if (m < k) impossible(); for (auto to : a) { if (to < k) impossible(); } int ans = 2e9; for (int c = k; c <= m; c++) { for (int i = 0; i < m; i++) { for (int j = i + c - 1; j < m; j++) { int saizu = j - i + 1; vector <int> pref(saizu), suff(saizu); pref[0] = b[i]; for (int l = 1; l < saizu; l++) { pref[l] = pref[l - 1] + b[i + l]; } suff[saizu - 1] = b[j]; for (int l = saizu - 2; l >= 0; l--) { suff[l] = suff[l + 1] + b[i + l]; } if (dishes <= pref[c - 1]) { ans = min(ans, pref[c - 1] - dishes); } if (dishes <= suff[saizu - c]) { ans = min(ans, suff[saizu - c] - dishes); } for (int l = 1; l < c; l++) { if (dishes <= pref[l] + suff[saizu - c + l]) { ans = min(ans, pref[l] + suff[saizu - c + l] - dishes); } } } } } //~ dp[0][0] = 1; //~ for (int i = 0; i < m; i++) { //~ for (int c = m; c >= 1; c--) { //~ dp[c] |= (dp[c - 1] << b[i]); //~ } //~ } //~ int ans = 2e9; //~ for (int c = k; c <= m; c++) { //~ for (int i = dishes; i <= chefs; i++) { //~ if (dp[c][i]) { //~ ans = min(ans, i - dishes); //~ } //~ } //~ } if (ans > 1e9) impossible(); cout << ans; } int main() { do_not_disturb int t = 1; //~ cin >> t; while (t--) { 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...