Submission #745832

#TimeUsernameProblemLanguageResultExecution timeMemory
745832vjudge1Kitchen (BOI19_kitchen)C++11
31 / 100
3 ms212 KiB
#include <bits/stdc++.h> using namespace std; int n,m,k; int a[301]; int b[301]; int sum=0; void subtask1() { int ans=1e9; if (m<k) { cout << "Impossible" << endl; return; } if (k==1) { for (int i=1;i<=m;i++) { if (b[i]>=sum) { ans=min(ans,b[i]-sum); } } int u=0; for (int i=1;i<=m;i++) { u+=b[i]; } if (u>=sum) { ans=min(ans,u); } if (ans==1e9) { cout << "Impossible" << endl; } else { cout << ans-sum << endl; } return; } else if (k==2) { int u=0; for (int i=1;i<=m;i++) { u+=b[i]; } if (u>=sum) { ans=min(ans,u); } if (ans==1e9) { cout << "Impossible" << endl; } else { cout << ans-sum << endl; } return; } else { cout << "Impossible" << endl; return; } } int check(int mask) { int u=0; int db=0; int su=0; for (int i=0;i<m;i++) { if ((mask>>i)%2==1) { if (b[i+1]>=n) { db++; } else { u+=b[i+1]; } su+=b[i+1]; } } if ((k<=db+(int(u/n))) && (sum<=su)) { return(su-sum); } else { return(1e9); } } void subtask2() { for (int i=1;i<=n;i++) { if (a[i]<k) { cout << "Impossible" << endl; return; } } int ans=1e9; for (int i=0;i<pow(2,m);i++) { ans=min(ans,check(i)); } if (ans>=1e9) { cout << "Impossible" << endl; } else { cout << ans << endl; } } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cin >> n >> m >> k; for (int i=1;i<=n;i++) { cin >> a[i]; sum+=a[i]; } for (int i=1;i<=m;i++) { cin >> b[i]; } /* if (m<=2) { subtask1(); return(0); } */ if (m<=15) { subtask2(); return(0); } 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...