Submission #125991

#TimeUsernameProblemLanguageResultExecution timeMemory
125991mechfrog88Kitchen (BOI19_kitchen)C++14
31 / 100
1064 ms504 KiB
#include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #pragma GCC optimize("unroll-loops,no-stack-protector") #pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native") using namespace __gnu_pbds; using namespace std; template <typename T> using ordered_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>; typedef long long ll; typedef long double ld; ll n,m,k; ll ans = LLONG_MAX; vector <ll> chef; vector <ll> arr; void func(vector <ll> temp,ll index){ if (index == m && temp.size() >= k){ bool ok = true; ll left = 0; ll c = 0; while (c < arr.size() && ok){ sort(temp.rbegin(),temp.rend()); ll count = 0; for (int z=0;count<k;z++){ while (temp[z] == 0 && z < temp.size()){ z++; } if (z == temp.size()){ ok = false; break; } count++; temp[z]--; } if (arr[c] < k){ ok = false; break; } left += arr[c]-k; c++; } ll s = 0; for (int z=0;z<temp.size();z++){ s += temp[z]; } if (s >= left && ok) ans = min(ans,s-left); return; } if (index == m) return; func(temp,index+1); temp.push_back(chef[index]); func(temp,index+1); } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m >> k; arr.resize(n); for (int z=0;z<n;z++){ cin >> arr[z]; } chef.resize(m); for (int z=0;z<m;z++){ cin >> chef[z]; } vector <ll> temp; func(temp,0); if (ans == LLONG_MAX){ cout << "Impossible" << endl; } else { cout << ans << endl; } }

Compilation message (stderr)

kitchen.cpp: In function 'void func(std::vector<long long int>, ll)':
kitchen.cpp:22:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (index == m && temp.size() >= k){
                       ~~~~~~~~~~~~^~~~
kitchen.cpp:26:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while (c < arr.size() && ok){
                ~~^~~~~~~~~~~~
kitchen.cpp:30:42: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 while (temp[z] == 0 && z < temp.size()){
                                        ~~^~~~~~~~~~~~~
kitchen.cpp:33:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
                 if (z == temp.size()){
                     ~~^~~~~~~~~~~~~~
kitchen.cpp:48:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (int z=0;z<temp.size();z++){
                      ~^~~~~~~~~~~~
#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...