Submission #1320922

#TimeUsernameProblemLanguageResultExecution timeMemory
1320922metall1caKitchen (BOI19_kitchen)C++20
0 / 100
24 ms47828 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ld long double
const int INF=1e9;
int main()
{
    #ifndef ONLINE_JUDGE
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
    #endif
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll n,m,k,ok=0,mx=LLONG_MIN;
    cin>>n>>m>>k;
    vector<ll> v(n),v1(m);
    for(ll i=0;i<n;i++)
    {
        cin>>v[i];
        if(v[i]<k)
        {
            ok=1;
            break;
        }
        mx=max(mx,v[i]);
    }
    for(ll i=0;i<m;i++)
    {
        cin>>v1[i];
    }
    if(k>v1.size() || ok==1)
    {
        cout<<"Impossible\n";
    }
    else
    {
        ll ans=0;
        map<ll,pair<ll,ll>> dp3;
        vector<ll> v2;
        map<ll,ll> dp;
        dp3[0].first=1;
        for(ll i=0;i<m;i++)
        {
            for(ll j=mx+v1[i]-1;j>=v1[i];j--)
            {
                if(dp3[j-v1[i]].first==1 && j-v1[i]<=mx)
                {
                    dp3[j].first=1;
                    dp3[j].second=dp3[j-v1[i]].second+1;
                    if(dp3[j].second>=k)
                    {
                        dp[j]=1;
                        v2.push_back(j);
                    }
                }
            }
        }
        for(ll i=0;i<=mx;i++)
        {
            if(dp[i]==0)
            {
                continue;
            }
            for(ll j=0;j<m;j++)
            {
                dp[i+v1[j]]=1;
                v2.push_back(i+v1[j]);
            }
        }
        sort(v2.begin(),v2.end());
        if(v2.size()==0)
        {
            cout<<"Impossible";
            return 0;
        }
        for(ll i=0;i<n;i++)
        {
            auto u=lower_bound(v2.begin(),v2.end(),v[i]);
            ll op=u-v2.begin();
            ans+=abs(v2[op]-v[i]);
        }
        cout<<ans<<"\n";
    }
    return 0;
}

Compilation message (stderr)

kitchen.cpp: In function 'int main()':
kitchen.cpp:9:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
    9 |     freopen("input.txt","r",stdin);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~
kitchen.cpp:10:12: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |     freopen("output.txt","w",stdout);
      |     ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#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...