Submission #938697

#TimeUsernameProblemLanguageResultExecution timeMemory
938697vjudge1Kitchen (BOI19_kitchen)C++17
31 / 100
1061 ms600 KiB
#include <bits/stdc++.h> #define int long long #define endl "\n" using namespace std; vector<int>a; vector<int>b; vector<int>contribution; int n,m,k; int total=0; int sum=0; int c=0; int c1; int smallest=INT_MAX; void dp(int i){ if(i>=m)return; if(sum>smallest){ return; } sum+=b[i]; c+=contribution[i]; if(c>=c1&&sum>=total){ smallest=min(smallest,sum); if(sum==smallest){ sum-=b[i]; c-=contribution[i]; return; } } dp(i+1); sum-=b[i]; c-=contribution[i]; dp(i+1); } signed main(){ cin>>n>>m>>k; c1=n*k; a.resize(n); b.resize(m); contribution.resize(m); int cont=0; int s=0; bool flag=false; for(int i=0;i<n;i++){ cin>>a[i]; total+=a[i]; if(a[i]<k){ flag=true; } } for(int i=0;i<m;i++){ cin>>b[i]; s+=b[i]; contribution[i]=min(n,b[i]); cont+=contribution[i]; } if(flag){ cout<<"Impossible\n"; return 0; } if((n*k)>cont){ cout<<"Impossible\n"; return 0; } if(total>s){ cout<<"Impossible\n"; return 0; } dp(0); cout<<smallest-total<<endl; }
#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...