Submission #925847

#TimeUsernameProblemLanguageResultExecution timeMemory
925847vjudge1Kitchen (BOI19_kitchen)C++17
9 / 100
89 ms205704 KiB
// #pragma GCC target ("avx2") // #pragma GCC optimization ("O3") // #pragma GCC optimization ("unroll-loops") #include <bits/stdc++.h> #define int long long #define ff first #define ss second #define pb push_back #define yes cout<<"Yes\n" #define no cout<<"No\n" #define no1 cout<<"-1\n" using namespace std; const int N = 301; const int M = 1e5+10; const int INF = 1e18; const int mod = 998244353; // int binpow (int a, int n) { // if (n == 0) // return 1; // if (n % 2 == 1) // return (binpow (a, n-1) * a)%mod; // else { // int b = binpow (a, n/2) % mod; // return (b * b)%mod; // } // } int n,m,k; int a[N]; int b[N]; int dp[N][M]; int sum1; int sum2; int p[N]; void solve(){ cin>>n>>m>>k; for(int i = 1;i<=n;i++){ cin>>a[i]; sum1+=a[i]; } for(int i = 1;i<=m;i++){ cin>>b[i]; sum2+=b[i]; } if(sum2<sum1){ cout<<"Impossible\n"; return; } //sub1 if(m>2){ for(int i = 0;i<=m;i++){ dp[i][0] = 1; } for(int i = 1;i<=m;i++){ for(int j = 0;j<=sum2;j++){ dp[i][j+b[i]] = dp[i-1][j]; } } // for(int i = 1;i<=m;i++){ // for(int j = 1;j<=sum2;j++){ // cout<<dp[i][j]<<' '; // } // cout<<'\n'; // } for(int i = 0;i<=sum2;i++){ bool x = 0; for(int j = 1;j<=m;j++) x|=dp[j][i]; p[i] = x; } int mn = INF; for(int j = sum1;j<=sum2;j++){ if(p[j]){ mn = min(mn,j); } } cout<<mn-sum1<<'\n'; return; } //sub2 if(k>2){ cout<<"Impossible\n"; return; } if(k==2){ if(m==1){ cout<<"Impossible\n"; return; } int sum = 0; for(int i = 1;i<=n;i++){ if(a[i] == 1){ cout<<"Impossible\n"; return; } sum+=a[i]; } if(b[1]+b[2] < sum){ cout<<"Impossible\n"; return; } cout<<b[1]+b[2]-sum; } if(k==1){ int sum = 0; for(int i = 1;i<=n;i++){ sum+=a[i]; } if(b[1]+b[2] < sum){ cout<<"Impossible\n"; return; } int x,y,z; x = y = z = INF; z = b[1]+b[2]-sum; if(b[1]>=sum) x = b[1]-sum; if(b[2]>=sum) y = b[2]-sum; cout<<min({x,y,z}); } } signed main(){ ios_base::sync_with_stdio(0); cin.tie(nullptr); // cout.tie(nullptr); int t = 1; // cin>>t; // cout<<""; for(int i = 1;i<=t;i++){ solve(); // cout<<'\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...