Pagini recente » Cod sursa (job #2985974) | Cod sursa (job #1970177) | Cod sursa (job #2233451) | Cod sursa (job #1347588) | Cod sursa (job #2157500)
#include <fstream>
using namespace std;
ifstream fin ("zebughil.in"); ofstream fout ("zebughil.out");
const int nmax = 17;
int n;
int v[nmax + 1];
pair<int, int> d[1 << nmax];
int main () {
int n, k;
for (int t = 0; t < 3; ++ t) {
fin >> n >> k;
for (int i = 0; i < n; ++ i)
fin >> v[ i ];
for (int i = 0; i < (1 << n); ++ i) {
d[ i ] = make_pair(1 << 30, 0);
}
d[ 0 ] = make_pair(0, 0);
for (int i = 0; i < (1 << n); ++ i) {
for (int j = 0; j < n; ++ j) {
if (i & (1 << j))
continue;
int st = i + (1 << j);
if (d[ i ].second <= k - v[ j ]) {
d[ st ] = min(d[ st ], make_pair(d[ i ].first, d[ i ].second + v[ j ]));
} else {
d[ st ] = min(d[ st ], make_pair(d[ i ].first + 1, v[ j ]));
}
}
}
fout << d[(1 << n) - 1].first + (d[(1 << n) - 1].second > 0) << "\n";
}
fin.close();
fout.close();
return 0;
}