제출 #1321059

#제출 시각아이디문제언어결과실행 시간메모리
1321059metall1caKitchen (BOI19_kitchen)C++20
100 / 100
23 ms1080 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
int main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll n,m,k,ok=0,sum=0,gy=0;
    cin>>n>>m>>k;
    vector<ll> v(n),v1(m);
    for(ll i=0;i<n;i++)
    {
        cin>>v[i];
        if(v[i]<k)
        {
            cout<<"Impossible\n";
            return 0;
        }
        gy+=v[i];
    }
    for(ll i=0;i<m;i++)
    {
        cin>>v1[i];
        sum+=v1[i];
    }
    if(k>v1.size() || gy>sum)
    {
        cout<<"Impossible\n";
        return 0;
    }
    else
    {
        ll ans=0;
        vector<ll> dp(sum+1,-100000);
        dp[0]=0;
        for(ll i=0;i<m;i++)
        {
            for(ll j=sum;j>=v1[i];j--)
            {
                if(dp[j-v1[i]]!=-100000)
                {
                    dp[j]=max(dp[j],dp[j-v1[i]]+min(v1[i],n));
                }
            }
        }
        for(ll i=gy;i<=sum;i++)
        {
            if(dp[i]>=n*k)
            {
                cout<<i-gy<<"\n";
                return 0;
            }
        }
        cout<<"Impossible\n";
    }
    return 0;
}
#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...