Pagini recente » Cod sursa (job #2566110) | Cod sursa (job #1818857) | Cod sursa (job #2248656) | Cod sursa (job #1556607) | Cod sursa (job #1832845)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 18;
int v[NMAX], g, n;
pair <int, int> d[(1 << NMAX)];
int main ()
{
ifstream cin ("zebughil.in");
ofstream cout ("zebughil.out");
for (int shp = 1; shp <= 3; shp++)
{
cin >> n >> g;
for (int i = 0; i < n; i++)
cin >> v[i];
d[0] = make_pair(0, 0);
for (int i = 1; i < (1 << n); i++)
{
d[i] = make_pair(NMAX, 0);
for (int bit = 0; bit < n; bit++)
{
int p = (i & (1 << bit));
if (p == 0)
continue;
pair <int, int> new_p;
int nr = i - (1 << bit);
if (d[nr].second >= v[bit])
{
new_p = make_pair(d[nr].first, d[nr].second - v[bit]);
}
else
new_p = make_pair(d[nr].first + 1, g - v[bit]);
if (d[i].first > new_p.first)
d[i] = new_p;
else if (d[i].first == new_p.first && d[i].second < new_p.second)
d[i] = new_p;
}
}
cout << d[(1 << n) - 1].first << "\n";
}
return 0;
}