Submission #1220114

#TimeUsernameProblemLanguageResultExecution timeMemory
1220114jellybeanKitchen (BOI19_kitchen)C++20
31 / 100
6 ms464 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define fi first #define se second #define pb push_back #define dd(x) cout<<#x<<" is "<<x<<endl; #define dl(x) cout<<#x<<" is "; for(auto i:x) cout<<i<<' '; cout<<endl; typedef pair<int,int> pii; const int N = 305, M = 305; int dp[M][90005], a[N], b[M]; signed main(){ ios::sync_with_stdio(0); cin.tie(0); int n,m,k; cin>>n>>m>>k; int tot = 0; for(int i=1; i<=n; i++) cin>>a[i], tot+=a[i]; for(int i=1; i<=m; i++) cin>>b[i]; if(m<k) {cout<<"Impossible"; return 0;} for(int i=1; i<=n; i++){ if(a[i] < k) {cout<<"Impossible"; return 0;} } int ans = LLONG_MAX; for(int i=0; i<(1<<m); i++){ int sum = 0, cnt=0; deque<int>d; for(int j=0; j<m; j++){ if(i&(1<<j)) { sum += b[j+1]; cnt++; d.pb(b[j+1]); } } //dl(d); //if(sum == 7) dd(2) if(cnt < k or sum < tot) continue; //if(sum == 7) dd(1) bool f = 0; for(int j=0; j<n; j++){ if(d.size() < k) {f=1; break;} for(int x=0; x<k; x++){ int y = d[0]; d.pop_front(); y--; if(y != 0) d.push_back(y); } } if(f) continue; ans = min(ans,sum-tot); } if(ans == LLONG_MAX) cout<<"Impossible"; else cout<<ans; 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...