Pagini recente » Cod sursa (job #1406442) | Cod sursa (job #3291123) | Cod sursa (job #930788) | Cod sursa (job #1406912) | Cod sursa (job #3174285)
#include <fstream>
#define DIM 17
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n,gmax,p,st,ant,v[DIM];
struct elem {
int nr,g;
}d[(1<<DIM)];
int main() {
for (int t=1;t<=3;t++) {
fin>>n>>gmax;
for (int i=0;i<n;i++)
fin>>v[i];
p=(1<<n)-1;
d[0].nr=1;
d[0].g=0;
for (int i=1;i<=p;i++) {
d[i].nr=n+1;
d[i].g=0;
}
for (int st=1;st<=p;st++)
for (int i=0;i<n;i++)
if (((st>>i)&1)==1) {
ant=st-(1<<i);
if (d[ant].nr!=n+1) {
if (d[ant].g+1LL*v[i]<=gmax) {
if (d[ant].nr<d[st].nr || (d[ant].nr==d[st].nr && d[ant].g+v[i]<d[st].g)) {
d[st].nr=d[ant].nr;
d[st].g=d[ant].g+v[i];
}
}
else
if (d[ant].nr+1<d[st].nr || (d[ant].nr+1==d[st].nr && v[i]<d[st].g)) {
d[st].nr=d[ant].nr+1;
d[st].g=v[i];
}
}
}
fout<<d[p].nr<<"\n";
}
return 0;
}