Submission #423306

#TimeUsernameProblemLanguageResultExecution timeMemory
423306abdzagKitchen (BOI19_kitchen)C++17
31 / 100
1090 ms62168 KiB
#include<bits/stdc++.h> #include<unordered_map> #define rep(i,a,b) for(int i=int(a);i<int(b);i++) #define rrep(i,a,b) for(int i=int(a);i>int(b);i--) #define trav(a,v) for(auto& a: v) #define sz(v) v.size() #define all(v) v.begin(),v.end() #define vi vector<int> typedef long long ll; typedef long double ld; typedef unsigned long long ull; const long long inf = 1e15; using namespace std; int main() { cin.sync_with_stdio(false); ll n, m, k; cin >> n >> m >> k; vector<ll> v(n); vector<ll> v2(m); rep(i, 0, n) { cin >> v[i]; if (v[i] < k) { cout << "Impossible" << endl; return 0; } } rep(i, 0, m)cin >> v2[i]; ll sum = 0; rep(i, 0, n)sum += v[i]; set < pair < set<ll>,ll>> dp0; set<ll> definer; dp0.insert(make_pair(definer, 0)); set < pair < set<ll>, ll>> dp=dp0; rep(i, 0, m) { trav(a, dp0) { pair < set<ll>, ll> cur = a; cur.first.insert(v2[i]); cur.second += v2[i]; dp.insert(cur); } dp0 = dp; } ll ans = inf; trav(a, dp) { if (a.first.size() >= k) { ll cur = 0; set<ll> q = a.first; while (1) { if (q.size() < k) { break; } cur += *q.begin(); q.erase(q.begin()); if (cur >= n)break; } if (a.second >= sum&&cur>=n) { ans = min(a.second, ans); } } } if (ans == inf)cout << "Impossible" << endl; else cout << ans - sum << endl; return 0; }

Compilation message (stderr)

kitchen.cpp: In function 'int main()':
kitchen.cpp:47:22: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   47 |   if (a.first.size() >= k) {
      |       ~~~~~~~~~~~~~~~^~~~
kitchen.cpp:51:18: warning: comparison of integer expressions of different signedness: 'std::set<long long int>::size_type' {aka 'long unsigned int'} and 'll' {aka 'long long int'} [-Wsign-compare]
   51 |     if (q.size() < k) {
      |         ~~~~~~~~~^~~
#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...