Pagini recente » Cod sursa (job #751181) | Cod sursa (job #1122363) | Cod sursa (job #669604) | Cod sursa (job #1401493) | Cod sursa (job #2586674)
#include<fstream>
#define inf 2000000000
#include<algorithm>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
struct zeb
{
int c,g;
}d[131072];
int v[18];
int n,gmax;
void reset(int x)
{
for(int i=1;i<=(1<<x);i++)
d[i]={inf,inf};
}
int main()
{
for(int t=1;t<=3;t++)
{
fin>>n>>gmax;
reset(n);
d[0]={1,0};
for(int i=0;i<n;i++)
fin>>v[i];
for(int i=1;i<(1<<n);i++)
for(int j=0;(1<<j)<=i;j++)
if(d[i-(1<<j)].c!=inf&&((i>>j)&1)==1)
{
if(d[i-(1<<j)].g+v[j]<=gmax)
{
if(d[i-(1<<j)].c<d[i].c||d[i-(1<<j)].c==d[i].c&&d[i].g<d[i-(1<<j)].g+v[j])
{
d[i].c=d[i-(1<<j)].c;
d[i].g=d[i-(1<<j)].g+v[j];
}
}
else
{
if(d[i-(1<<j)].c+1<d[i].c||d[i-(1<<j)].c+1==d[i].c&&d[i].g<v[j])
{
d[i].c=d[i-(1<<j)].c+1;
d[i].g=v[j];
}
}
}
fout<<d[(1<<n)-1].c<<'\n';
}
return 0;
}