//https://c...content-available-to-author-only...s.fi/problemset/task/1634
/*
dp[i] số đồng xu tối thiểu để đạt được tổng giá trị của các đồng xu là i
*/
#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 1e6 + 5, INF = 1e18;
long long n,x,dp[MaxN], c[MaxN];
void input()
{
cin >> n >> x;
for (long long i=1; i<=n; i++)
{
cin >> c[i];
}
}
void solve1() // xuôi
{
memset(dp,0x3f,sizeof(dp)); // các trường hợp còn lại bằng -1 do chưa thăm hay chưa tồn tại
dp[0]=0; //trường hợp base ko có cách chọn nào tổng bằng 0 do các đồng xu đều có giá trị nguyên dương
for (long long i=0; i<x; i++)
{
if(dp[i]>-1) // nếu tồn tại cách chọn với i rồi thì mới so sánh được dp[i]+1 và dp[i+c[j]]
{
for (long long j=1; j<=n; j++)
{
if(i+c[j]<=x) // vì kết quả bài toán cần tìm là x nên >x là vô nghĩa vì dp[x] chỉ cần tạo thành từ dp[t] với t<x
{
dp[i+c[j]]=min(dp[i+c[j]],dp[i]+1);
}
}
}
}
if(dp[x]>=INF)
{
cout << -1;
}
else
{
cout << dp[x];
}
}
void solve2()
{
memset(dp,0x3f,sizeof(dp)); // các trường hợp còn lại bằng -1 do chưa thăm hay chưa tồn tại
dp[0]=0; //trường hợp base ko có cách chọn nào tổng bằng 0 do các đồng xu đều có giá trị nguyên dương
for (long long i=1; i<=x; i++)
{
for (long long j=1; j<=n; j++ )
{
if(i-c[j]>=0)// trường hợp âm sẽ bị bug
{
dp[i]=min(dp[i],dp[i-c[j]]+1);
}
}
}
if(dp[x]>=INF)
{
cout << -1;
}
else
{
cout << dp[x];
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
input();
solve2();
return 0;
}
Ly9odHRwczovL2MuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLnMuZmkvcHJvYmxlbXNldC90YXNrLzE2MzQKLyoKZHBbaV0gc+G7kSDEkeG7k25nIHh1IHThu5FpIHRoaeG7g3UgxJHhu4MgxJHhuqF0IMSRxrDhu6NjIHThu5VuZyBnacOhIHRy4buLIGPhu6dhIGPDoWMgxJHhu5NuZyB4dSBsw6AgaQoqLwojaW5jbHVkZTxiaXRzL3N0ZGMrKy5oPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwpjb25zdCBsb25nIGxvbmcgTWF4TiA9IDFlNiArIDUsIElORiA9IDFlMTg7CmxvbmcgbG9uZyBuLHgsZHBbTWF4Tl0sIGNbTWF4Tl07CnZvaWQgaW5wdXQoKQp7CiAgICBjaW4gPj4gbiA+PiB4OwogICAgZm9yIChsb25nIGxvbmcgaT0xOyBpPD1uOyBpKyspCiAgICB7CiAgICAgICAgY2luID4+IGNbaV07CiAgICB9Cn0Kdm9pZCBzb2x2ZTEoKSAvLyB4dcO0aQp7CiAgICBtZW1zZXQoZHAsMHgzZixzaXplb2YoZHApKTsgLy8gY8OhYyB0csaw4budbmcgaOG7o3AgY8OybiBs4bqhaSBi4bqxbmcgLTEgZG8gY2jGsGEgdGjEg20gaGF5IGNoxrBhIHThu5NuIHThuqFpCiAgICBkcFswXT0wOyAvL3RyxrDhu51uZyBo4bujcCBiYXNlIGtvIGPDsyBjw6FjaCBjaOG7jW4gbsOgbyB04buVbmcgYuG6sW5nIDAgZG8gY8OhYyDEkeG7k25nIHh1IMSR4buBdSBjw7MgZ2nDoSB0cuG7iyBuZ3V5w6puIGTGsMahbmcKICAgIGZvciAobG9uZyBsb25nIGk9MDsgaTx4OyBpKyspCiAgICB7CiAgICAgICAgaWYoZHBbaV0+LTEpIC8vIG7hur91IHThu5NuIHThuqFpIGPDoWNoIGNo4buNbiB24bubaSBpIHLhu5NpIHRow6wgbeG7m2kgc28gc8OhbmggxJHGsOG7o2MgZHBbaV0rMSB2w6AgZHBbaStjW2pdXQogICAgICAgIHsKICAgICAgICAgICAgZm9yIChsb25nIGxvbmcgaj0xOyBqPD1uOyBqKyspCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGkrY1tqXTw9eCkgLy8gdsOsIGvhur90IHF14bqjIGLDoGkgdG/DoW4gY+G6p24gdMOsbSBsw6AgeCBuw6puID54IGzDoCB2w7QgbmdoxKlhIHbDrCBkcFt4XSBjaOG7iSBj4bqnbiB04bqhbyB0aMOgbmggdOG7qyBkcFt0XSB24bubaSB0PHgKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGRwW2krY1tqXV09bWluKGRwW2krY1tqXV0sZHBbaV0rMSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZihkcFt4XT49SU5GKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY291dCA8PCBkcFt4XTsKICAgIH0KfQp2b2lkIHNvbHZlMigpCnsKICAgIG1lbXNldChkcCwweDNmLHNpemVvZihkcCkpOyAvLyBjw6FjIHRyxrDhu51uZyBo4bujcCBjw7JuIGzhuqFpIGLhurFuZyAtMSBkbyBjaMawYSB0aMSDbSBoYXkgY2jGsGEgdOG7k24gdOG6oWkKICAgIGRwWzBdPTA7IC8vdHLGsOG7nW5nIGjhu6NwIGJhc2Uga28gY8OzIGPDoWNoIGNo4buNbiBuw6BvIHThu5VuZyBi4bqxbmcgMCBkbyBjw6FjIMSR4buTbmcgeHUgxJHhu4F1IGPDsyBnacOhIHRy4buLIG5ndXnDqm4gZMawxqFuZwogICAgZm9yIChsb25nIGxvbmcgaT0xOyBpPD14OyBpKyspCiAgICB7CiAgICAgICAgZm9yIChsb25nIGxvbmcgaj0xOyBqPD1uOyBqKysgKQogICAgICAgIHsKICAgICAgICAgICAgaWYoaS1jW2pdPj0wKS8vIHRyxrDhu51uZyBo4bujcCDDom0gc+G6vSBi4buLIGJ1ZyAKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgZHBbaV09bWluKGRwW2ldLGRwW2ktY1tqXV0rMSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZihkcFt4XT49SU5GKQogICAgewogICAgICAgIGNvdXQgPDwgLTE7CiAgICB9CiAgICBlbHNlCiAgICB7CiAgICAgICAgY291dCA8PCBkcFt4XTsKICAgIH0KfQppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgaW5wdXQoKTsKICAgIHNvbHZlMigpOwogICAgcmV0dXJuIDA7Cn0=