Pagini recente » Cod sursa (job #140546) | Cod sursa (job #1801929) | Cod sursa (job #851264) | Cod sursa (job #2964693) | Cod sursa (job #2334237)
#include <bits/stdc++.h>
using namespace std;
ifstream in("zebughil.in");
ofstream out("zebughil.out");
const int N = 18;
int v[N];
pair<int,int> dp[1<<N];
int main()
{
int t = 3;
while (t--)
{
int n,g;
in >> n >> g;
for (int i = 0; i<n; i++)
in >> v[i];
int m = (1<<n);
for (int i = 0; i<m; i++)
dp[i] = {1<<30,0};
dp[0] = {0,0};
for (int i = 0; i<m; i++)
for (int j = 0; j<n; j++)
if (!(i&(1<<j)))
{
int k = i+(1<<j);
if (dp[i].second<=g-v[j])
dp[k] = min(dp[k],{dp[i].first,dp[i].second+v[j]});
else
dp[k] = min(dp[k],{dp[i].first+1,v[j]});
}
out << dp[m-1].first+(dp[m-1].second>0) << "\n";
}
}