| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1320922 | metall1ca | Kitchen (BOI19_kitchen) | C++20 | 24 ms | 47828 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;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
