Pagini recente » Cod sursa (job #3135658) | Cod sursa (job #2132626) | Cod sursa (job #1079864) | Cod sursa (job #442194) | Cod sursa (job #3174360)
#include <bits/stdc++.h>
#define INF 2e9 + 1
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int dp1[(1 << 17)], dp2[(1 << 17)];
int a[20], n, g;
int nr = 3;
int main()
{
for (; nr--;)
{
fin >> n >> g;
for (int i = 1; i <= n; i++)
{
fin >> a[i];
}
for (int i = 1; i < (1 << n); i++)
{
dp1[i] = INF;
}
dp1[0] = 1;
for (int i = 1; i < (1 << n); i++)
{
for (int j = 0; j < n; j++)
{
if (i & (1 << j))
{
int nou = i - (1 << j);
if (dp2[nou] + a[j + 1] <= g)
{
if (dp1[nou] < dp1[i] || (dp1[nou] == dp1[i] && dp2[nou] + a[j + 1] < dp2[i]))
{
dp1[i] = dp1[nou];
dp2[i] = dp2[nou] + a[j + 1];
}
}
else if ((dp1[nou] + 1) < dp1[i] || ((dp1[nou] + 1) == dp1[i] && a[j + 1] < dp2[i]))
{
dp1[i]=dp1[nou]+1;
dp2[i]=a[j + 1];
}
}
}
}
fout<<dp1[(1<<n)-1]<<'\n';
}
}