Submission #134928

#TimeUsernameProblemLanguageResultExecution timeMemory
134928miguelKitchen (BOI19_kitchen)C++14
100 / 100
85 ms1272 KiB
#include<bits/stdc++.h> using namespace std; #define rc(x) return cout<<x<<endl,0 #define pb push_back #define dbg(x) cout << #x << '=' << x << '\n'; #define ll long long #define sz size() #define x first #define y second #define pi pair <int, int> #define pii pair <int, pi> #define vi vector <int> #define nmax 301 const ll mod = 998244353; int n, m, k, s; int a[605], b[605], dp[2][1000001]; int32_t main(){ ios_base :: sync_with_stdio(0); cin.tie(); cout.tie(); //cout<<100000; cin>>n>>m>>k; //if(m<k) return cout<<"Impossible", 0; for(int i=1; i<=n; i++){ cin>>a[i]; s+=a[i]; if(a[i]<k) return cout<<"Impossible", 0; } for(int i=1; i<=m; i++) cin>>b[i]; for(int i=0; i<=100000; i++){ dp[0][i]=dp[1][i]=-(1<<30); } dp[0][0]=0; //int cur=0; for(int i=1; i<=m; i++){ for(int h=0; h<=100000; h++){ if(dp[0][h]==-(1<<30)) continue; dp[1][h]=max(dp[0][h], dp[1][h]); dp[1][h+b[i]]=max(dp[0][h+b[i]], dp[0][h]+min(b[i], n)); } //cur+=b[i]; for(int h=0; h<=100000; h++) dp[0][h]=dp[1][h]; } //cout<<"xd"; for(int h=s; h<=100000; h++){ //cout<<h<<" "<<dp[0][h]<<endl; if(dp[0][h]>=n*k) return cout<<h-s, 0; } cout<<"Impossible"; }
#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...