Pagini recente » Cod sursa (job #617927) | Cod sursa (job #2574196) | Cod sursa (job #844089) | Cod sursa (job #1382244) | Cod sursa (job #2488768)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int Nmax = 20;
int v[Nmax];
int n, G;
int dp[1 << Nmax];
int solve(){
ll sum;
memset(dp,0,sizeof(dp));
for(int i, substep, step = 0; step < (1 << n); ++step){
sum = 0;
for(i = 0; i < n; ++i)
if(step & (1 << i))
sum += v[i];
if(sum <= 1LL * G)
dp[step] = 1;
else{
dp[step] = INT_MAX;
for(substep = (step - 1) & step; substep; substep = ((substep - 1) & step))
dp[step] = min(dp[step], dp[substep] + dp[step - substep]);
}
}
return dp[(1 << n) - 1];
}
int main(){
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
for(int t = 1; t <= 3; ++t){
cin >> n >> G;
for(int i = 1; i <= n; ++i)
cin >> v[i];
cout << solve() << '\n';
}
return 0;
}