Pagini recente » Cod sursa (job #1391576) | Cod sursa (job #652573) | Cod sursa (job #290205) | Cod sursa (job #2153483) | Cod sursa (job #2452742)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("zebughil.in");
ofstream out("zebughil.out");
const int maxn = 18;
int dp[(1 << maxn)];
int v[maxn];
void solve()
{
for(int i = 0; i < (1 << maxn); i++)
dp[i] = 0;
int n, G;
in >> n >> G;
for(int i = 1; i <= n; i++)
in >> v[i];
for(int conf = 0; conf < (1 << n); conf++)
{
long long s = 0;
for(int i = 0; i < n; i++)
if(conf & (1 << i))
s = s + v[i + 1];
if(G >= s)
{
dp[conf] = 1;
continue;
}
dp[conf] = (1 << 30);
for(int ant = (conf - 1) & conf; ant > 0; ant = conf & (ant - 1))
dp[conf] = min(dp[conf], dp[ant] + dp[conf - ant]);
}
out << dp[(1 << n) - 1] << "\n";
return;
}
int32_t main()
{
int T = 3;
for(int i = 1; i <= T; i++)
solve();
return 0;
}