제출 #127496

#제출 시각아이디문제언어결과실행 시간메모리
127496OptxPrimeKitchen (BOI19_kitchen)C++11
41 / 100
124 ms98936 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 int inf=1000000000; int a[310],b[310]; int dp[310][90010]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n,m,k; int mealsum=0,sum=0; cin>>n>>m>>k; for( int i=1;i<=n;i++ ) { cin>>a[i]; if( a[i] < k ){ cout << "Impossible" <<endl; return 0; } mealsum+=a[i]; } for( int i=1;i<=m;i++ ){ cin>>b[i]; sum+=b[i]; } 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=1;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...