Pagini recente » Cod sursa (job #2769204) | Cod sursa (job #2751342) | Cod sursa (job #1827528) | Cod sursa (job #2423588) | Cod sursa (job #1657901)
#include <fstream>
using namespace std;
int D[1<<19];
int t, i, j, v[19], g, n, all, unu, doi, sol;
int f[20];
int main () {
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
for (int t = 1; t<=3; t++) {
fin>>n>>g;
for (i=0;i<n;i++) {
fin>>v[i];
f[i] = 0;
}
f[n] = 0;
for (i=1;i<=( 1<<n )-1;i++)
D[i] = 21;
while (f[n] == 0) {
i = 0;
while (f[i] == 2) {
f[i] = 0;
i++;
}
f[i]++;
all = 0;
unu = 0;
doi = 0;
long long s = 0;
int ok = 1;
for (i=n-1;i>=0;i--) {
if (f[i] != 0) {
all += (1<<i);
s += v[i];
}
if (f[i] == 1)
unu += (1<<i);
if (f[i] == 2)
doi += (1<<i);
if (doi > unu) {
ok = 0;
break;
}
}
if (!ok)
continue;
if (s <= g)
D[all] = 1;
if (unu != 0 && doi != 0 && D[all] > D[unu] + D[doi])
D[all] = D[unu] + D[doi];
if (all == (1<<n)-1)
sol = D[all];
}
fout<<sol<<"\n";
}
return 0;
}