Pagini recente » Cod sursa (job #475350) | Cod sursa (job #3275754) | Cod sursa (job #1761800) | Cod sursa (job #2386364) | Cod sursa (job #3040710)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n, g, w[10001], nr[10001], x;
vector<int> v;
void solve()
{
fin >> n >> g;
v.push_back(0);
for(int i = 1; i <= n; ++ i)
{
fin >> x;
v.push_back(x);
}
int comp = (1 << n) - 1;
for(int i = 0; i <= comp; ++ i)
{
for(int j = 0; j < n; ++ j)
if(i & (1 << j))
{
int prec = i - (1 << j);
if(w[prec] + v[i] > g * nr[prec]){
if((nr[prec] + 1 < nr[i] || nr[i] == 0) || (nr[prec] + 1 == nr[i] && w[i] > w[prec] + v[i]))
{
nr[i] = nr[prec] + 1;
w[i] = w[prec] + v[i];
}
}else
if((nr[prec] < nr[i] || nr[i] == 0) || (nr[prec] == nr[i] && w[i] > w[prec] + v[i]))
{
nr[i] = nr[prec];
w[i] = w[prec] + v[i];
}
}
}
fout << nr[comp] << '\n';
}
int main()
{
for(int i = 0; i < 3; ++ i)
solve();
return 0;
}