Submission #942649

#TimeUsernameProblemLanguageResultExecution timeMemory
942649damwuanKitchen (BOI19_kitchen)C++17
50 / 100
36 ms604 KiB
#include<bits/stdc++.h> using namespace std; #define pb push_back #define fi first #define se second #define for1(i,j,k) for(int i=j;i<=k;i++) #define for2(i,j,k) for(int i=j;i>=k;i--) #define for3(i,j,k,l) for(int i=j;i<=k;i+=l) #define bit(n,i) ((n>>i)&1) #define all(x) x.begin(),x.end() //#pragma GCC optimize("O2,unroll-loops") //#pragma GCC target("avx,avx2,bmi,bmi2,sse,sse2,sse3,ssse3,sse4,popcnt") //#define int long long typedef long long ll; typedef pair<int,int> pii; typedef double db; typedef pair<db,db> pdd; typedef pair<ll,ll> pll; const ll maxn=300; const ll maxk=2e5+5; const ll block_sz=317; const ll inf=1e9; const ll mod=111539786; int n,m,k,a[maxn],b[maxn],sum; vector<int> dp; void sol() { cin >> n>>m>>k; for1(i,1,n) cin >> a[i]; for1(i,1,m) cin >> b[i]; if (k>m) { cout << "Impossible"; return; } for1(i,1,n) { if (a[i]< k) { cout << "Impossible"; return; } sum+=(a[i]); } // return; dp.resize(300*300+1,-inf); dp[0]=0; for1(i,1,m) { for2(j,300*300,0) { if (j-b[i]>=0) dp[j]=max(dp[j],dp[j-b[i]]+min(b[i],n)); } } // cerr<<m<<' '<<sum<<' '<< dp[m][sum]<<'\n'; for1(i,sum,300*300) { if (dp[i] >= n*k) { cout << i-sum<<'\n'; // cerr<< i-sum<<'\n'; return; } } cout << "Impossible\n"; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(NULL); // freopen("KITCHEN.inp","r",stdin); // freopen("KITCHEN.out","w",stdout); int t=1;//cin >> t; while (t--) { sol(); } } /* C[i-1][i+j-1]*C[sz[u]-i][sz[u]+sz[v]-i] */
#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...