Pagini recente » Cod sursa (job #347642) | Cod sursa (job #230889) | Cod sursa (job #2635491) | Cod sursa (job #3210333) | Cod sursa (job #2586683)
#include<fstream>
#define inf 2000000000
#include<algorithm>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
struct zeb
{
int c,g;
}d[131073];
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<n;j++)
if((i&j)==j)
{
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;
}