Submission #921140

#TimeUsernameProblemLanguageResultExecution timeMemory
921140shoryu386Kitchen (BOI19_kitchen)C++17
72 / 100
1082 ms95844 KiB
#include <bits/stdc++.h> using namespace std; #define int long long main(){ ios_base::sync_with_stdio(0); cin.tie(0); int n, m, k; cin >> n >> m >> k; int buckets[n], balls[m]; for (int x = 0; x < n; x++) cin >> buckets[x]; for (int x = 0; x < m; x++) cin >> balls[x]; #define IMP cout << "Impossible"; return 0; bool dead = false; for (int x = 0; x < n; x++){ if (buckets[x] < k){ dead = true; } } if (dead) {IMP;} int bucketsum = 0; for (int x = 0; x < n; x++){ bucketsum += buckets[x]; } #define BSMAX 100000 deque<bitset<BSMAX>> hmm; bitset<BSMAX> init; hmm.push_back(init); int firstbucket = n*k, lastbucket = n*k; hmm[n*k - firstbucket][0] = 1; sort(balls, balls+m, greater<int>()); int sum = 0, ssum[m]; for (int x = m-1; x > -1; x--){ sum += min(n, balls[x]); ssum[x] = sum; } sum = 0; int psum[m]; for (int x = 0; x < m; x++){ sum += balls[x]; psum[x] = sum; } for (int z = n*k; z <= n*k; z++){ while (firstbucket > max(0LL, z - min(balls[0], n)) ){ hmm.push_front(init); firstbucket--; } while (lastbucket > min(n*k, ssum[0])){ hmm.pop_back(); lastbucket--; } hmm[max(0LL, z - min(balls[0], n)) - firstbucket] |= (hmm[z - firstbucket] << balls[0]); } for (int x = 1; x < m; x++){ int kk = max(0LL, max(0LL, n*k - psum[x-1]) - min(balls[x], n)); int zz = min(n*k, ssum[x]); while (firstbucket > kk){ hmm.push_front(init); firstbucket--; } while (lastbucket > zz){ hmm.pop_back(); lastbucket--; } for (int z = max(0LL, n*k - psum[x-1]); z <= min(n*k, ssum[x]); z++){ assert(max(0LL, z - min(balls[x], n)) >= firstbucket); assert(z <= lastbucket); hmm[max(0LL, z - min(balls[x], n)) - firstbucket] |= (hmm[z - firstbucket] << balls[x]); } } int ans = -1; for (int x = bucketsum; x < BSMAX; x++){ if (hmm[0][x]){ ans = x-bucketsum; break; } } if (ans == -1) cout << "Impossible"; else cout << ans; }

Compilation message (stderr)

kitchen.cpp:6:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
    6 | main(){
      | ^~~~
#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...