Pagini recente » Cod sursa (job #2405175) | Cod sursa (job #1263290) | Cod sursa (job #2956471) | Cod sursa (job #572692) | Cod sursa (job #2846634)
#include <fstream>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int t,n,gmax,i,p,st,ant,v[17];
struct idk {
int nr,g;
}d[131100];
int main() {
for (t=1;t<=3;t++) {
fin>>n>>gmax;
for (i=0;i<n;i++)
fin>>v[i];
p=(1<<n)-1;
d[0].nr=1;
d[0].g=0;
for (i=1;i<=p;i++) {
d[i].nr=n+1;
d[i].g=0;
}
for (st=1;st<=p;st++)
for (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;
}