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