제출 #584270

#제출 시각아이디문제언어결과실행 시간메모리
584270talant117408Kitchen (BOI19_kitchen)C++17
0 / 100
263 ms3712 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(); } 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...