제출 #207089

#제출 시각아이디문제언어결과실행 시간메모리
207089brcodeKitchen (BOI19_kitchen)C++14
100 / 100
167 ms104056 KiB
#include <iostream> #include <bits/stdc++.h> using namespace std; const int MAXN = 310; const int MAXN2 = 310*310; int a[MAXN]; int b[MAXN]; int dp[MAXN2][MAXN]; int main(){ int n,m,k; cin>>n>>m>>k; int holdsum = 0; int holdsum2 = 0; for(int i=1;i<=n;i++){ cin>>a[i]; holdsum+=a[i]; if(a[i]<k){ cout<<"Impossible"<<endl; return 0; } } for(int i=1;i<=m;i++){ cin>>b[i]; holdsum2 += b[i]; } for(int i=0;i<=holdsum2;i++){ for(int j=0;j<=m;j++){ dp[i][j] = -1e9; } } dp[0][0]= 0; for(int i=0;i<=holdsum2;i++){ for(int j=1;j<=m;j++){ dp[i][j] = dp[i][j-1]; if(i-b[j]>=0){ dp[i][j] = max(dp[i][j-1],dp[i-b[j]][j-1]+min(b[j],n)); } } } for(int i=holdsum;i<=holdsum2;i++){ for(int j=1;j<=m;j++){ if(dp[i][j]>=n*k){ //cout<<i<<" "<<j<<" "<<dp[i][j]<<endl; cout<<i-holdsum<<endl; return 0; } } } cout<<"Impossible"<<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...