Pagini recente » Cod sursa (job #2434045) | Cod sursa (job #1922614) | Istoria paginii runda/bolt | Cod sursa (job #2054539) | Cod sursa (job #1687428)
#include <cstdio>
#include <algorithm>
using namespace std;
int trans, G,i, n, g[20],j, d[20][140000];
int main()
{
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
int t=3;
while(t--)
{
scanf("%d%d", &n, &G);
for(i=0; i<n; ++i) scanf("%d", &g[i]);
for(trans=0; trans<=n; ++trans)
for(i=1; i<(1<<n); ++i)
d[trans][i]=-1;
for(trans=1; trans<=n; ++trans)
for(i=1; i<(1<<n); ++i)
{
for(j=0; j<n; ++j)
if(i&(1<<j))
{
if(d[trans-1][i^(1<<j)]!=-1) d[trans][i]=max( d[trans][i], G-g[j]);
else if(d[trans][i^(1<<j)]>=g[j])
d[trans][i]=max( d[trans][i], d[trans][i^(1<<j)]- g[j]);
}
}
trans=1;
n=(1<<n)-1;
while(d[trans][n]==-1) ++trans;
printf("%d\n", trans);
}
return 0;
}