Submission #197110

#TimeUsernameProblemLanguageResultExecution timeMemory
197110nicolaalexandraKitchen (BOI19_kitchen)C++14
0 / 100
85 ms68728 KiB
#include <bits/stdc++.h> #define DIM 310 #define INF 2000000000 using namespace std; int a[DIM],b[DIM],dp[DIM][DIM*DIM]; int n,m,k,i,j,sum_a,sum_b; int main (){ cin>>n>>m>>k; for (i=1;i<=n;i++){ cin>>a[i]; sum_a += a[i]; } for (i=1;i<=m;i++){ cin>>b[i]; sum_b += b[i]; } sort (b+1,b+m+1); /// trb sa am minim k bucatari diferiti pt fiecare masa /// dp[i][j] - nr maxim de zone pe care pot sa le acopar cu primii i bucatari si in total sa platesc j for (i=1;i<=m;i++) for (j=0;j<=sum_b;j++) dp[i][j] = -INF; dp[0][0] = 0; for (i=1;i<=m;i++){ for (j=b[i];j<=sum_b;j++){ if (dp[i-1][j-b[i]] != -INF) dp[i][j] = max (dp[i-1][j],dp[i-1][j-b[i]]+min(n,b[i])); else dp[i][j] = dp[i-1][j]; } } for (j=sum_a;j<=sum_b;j++){ if (dp[m][j] >= n*k){ cout<<j-sum_a; return 0; } } cout<<"Impossible"; 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...