Pagini recente » Cod sursa (job #2004346) | Solutia problemei shoturi | Cod sursa (job #574848) | Cod sursa (job #1738267) | Cod sursa (job #1657893)
#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;
for (i=0;i<n;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 (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;
}