Submission #127533

#TimeUsernameProblemLanguageResultExecution timeMemory
127533OptxPrimeKitchen (BOI19_kitchen)C++11
100 / 100
133 ms111184 KiB
#include <iostream> #include <cmath> #include<vector> #include <algorithm> #include <utility> #include<stack> #include<queue> #include<map> #include <fstream> using namespace std; #define pb push_back #define mp make_pair #define ll long long #define maxn 310 int inf=1000000000; int a[310],b[310]; int dp[310][maxn*maxn]; ///identican kod al dzaba int main() { // ios_base::sync_with_stdio(false); // cin.tie(NULL); int n,m,k; int mealsum=0,sum=0; bool is=true; cin>>n>>m>>k; for( int i=1;i<=n;i++ ) { cin>>a[i]; if( a[i] < k ){ is=false; // return 0; } mealsum+=a[i]; } for( int i=1;i<=m;i++ ){ cin>>b[i]; sum+=b[i]; } if(!is){ cout << "Impossible" <<endl; return 0; } sum = 305*305; for( int i=0;i<=m;i++ ){ for( int j=0;j<=sum;j++ ) dp[i][j]=-inf; } dp[0][0]=0; for( int i=1;i<=m;i++ ){ for( int j=0;j<=sum;j++ ){ if( j - b[i] >=0 ) 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( int i = mealsum;i<= sum;i++ ){ if( dp[m][i] >= n*k ){ cout << i - mealsum << endl; return 0; } } cout << "Impossible" <<endl; 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...