제출 #888786

#제출 시각아이디문제언어결과실행 시간메모리
88878612345678Kitchen (BOI19_kitchen)C++17
100 / 100
62 ms111360 KiB
#include <bits/stdc++.h> using namespace std; const int nx=305; int n, m, k, sm, x, dp[nx][nx*nx], c, ans=INT_MAX; int main() { cin.tie(NULL)->sync_with_stdio(false); cin>>n>>m>>k; for (int i=1; i<=n; i++) cin>>x, sm+=x, c|=(x<k); for (int i=0; i<=n; i++) for (int j=1; j<nx*nx; j++) dp[i][j]=INT_MIN; for (int i=1; i<=m; i++) { cin>>x; for (int j=0; j<nx*nx; j++) dp[i][j]=dp[i-1][j]; for (int j=0; j+x<nx*nx; j++) { dp[i][j+x]=max(dp[i][j+x], dp[i-1][j]+min(x, n)); if (dp[i][j+x]>=n*k&&j+x>=sm) ans=min(ans, j+x-sm); } //for (int j=0; j<20; j++) cout<<i<<' '<<j<<' '<<dp[i][j]<<'\n'; } if (ans==INT_MAX||c) cout<<"Impossible"; else cout<<ans; }
#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...