Pagini recente » Cod sursa (job #3305915) | Cod sursa (job #1650550) | Cod sursa (job #2741095) | Cod sursa (job #1038531) | Cod sursa (job #3332383)
#include <bits/stdc++.h>
using namespace std;
ifstream f("zebughil.in");
ofstream g("zebughil.out");
struct elem
{
int camioane, greutate;
};
elem dp[300009];
int v[30];
int p[22];
signed main ()
{
p[0]=1;
for (int i=1; i<=19; i++)
p[i]=2*p[i-1];
for (int nrtest=1; nrtest<=3; nrtest++)
{
int n, gmax;
f >> n >> gmax;
for (int i=1; i<=n; i++)
f >> v[i];
for (int i=0; i<=(1<<n); i++)
dp[i]= {1,0};
for (int stare=1; stare<p[n]; stare++)
{
for (int j=1; j<=n; j++)
{
if ((stare&p[j])==0)
{
if (dp[stare].greutate+v[j]>gmax)
{
dp[stare|p[j]].camioane=dp[stare].camioane+1;
dp[stare|p[j]].greutate=v[j];
}
else
{
dp[stare|p[j]].camioane=dp[stare].camioane;
dp[stare|p[j]].greutate=dp[stare].greutate+v[j];
}
}
}
}
g << dp[p[n]-1].camioane << '\n';
}
}