Submission #1200797

#TimeUsernameProblemLanguageResultExecution timeMemory
1200797AiperiiiKitchen (BOI19_kitchen)C++20
41 / 100
116 ms197004 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define all(x) x.begin(),x.end() #define ff first #define ss second #define pb push_back signed main(){ ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); int n,m,k; cin>>n>>m>>k; vector <int> a(n+1),b(m+1); int suma=0,sumb=0; for(int i=1;i<=n;i++){ cin>>a[i]; suma+=a[i]; } for(int i=1;i<=m;i++){ cin>>b[i]; sumb+=b[i]; } for(int i=1;i<=n;i++){ if(a[i]<k){ cout<<"Impossible\n"; return 0; } } vector <vector <int > > dp(m+1, vector <int> (sumb+1,-1)); dp[0][0]=0; for(int i=1;i<=m;i++){ for(int j=b[i];j<=sumb;j++){ int mx=-1; if(dp[i-1][j-b[i]]!=-1){ mx=max(mx,dp[i-1][j-b[i]]+min(n,b[i])); } if(dp[i-1][j]!=-1){ mx=max(mx,dp[i-1][j]); } dp[i][j]=mx; } } int mn=1e18; for(int i=1;i<=m;i++){ for(int j=suma;j<=sumb;j++){ if(dp[i][j]>=n*k){ mn=min(mn,j-suma); } } } if(mn==1e18){ cout<<"Impossible\n"; return 0; } cout<<mn<<"\n"; } /* */
#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...