Pagini recente » Cod sursa (job #450025) | Cod sursa (job #202019) | Cod sursa (job #3125026) | Cod sursa (job #2241456) | Cod sursa (job #2717486)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int dp[(1 << 17) + 5], v[20];
long long sum[(1 << 17) + 5];
int main()
{
int t = 3;
while(t--)
{
int n, g;
fin >> n >> g;
for(int i = 1; i <= n; ++i)
fin >> v[i];
for(int msk = 0; msk < (1 << n); ++msk)
sum[msk] = -1;
sum[0] = 0;
for(int msk = 1; msk < (1 << n); ++msk)
{
for(int i = 0; i < n; ++i)
if(((1 << i) & msk) && sum[(1 << i) ^ msk] != -1)
{
sum[msk] = sum[(1 << i) ^ msk] + v[i + 1];
break;
}
}
for(int msk = 1; msk < (1 << n); ++msk)
{
dp[msk] = (1 << 26);
for(int submask = msk; submask; submask = (submask - 1) & msk)
if(sum[submask] <= g)
dp[msk] = min(dp[msk], dp[msk ^ submask] + 1);
}
fout << dp[(1 << n) - 1] << '\n';
}
return 0;
}