Pagini recente » Cod sursa (job #1643303) | Cod sursa (job #2272335) | Cod sursa (job #2917796) | Cod sursa (job #1856601) | Cod sursa (job #2242504)
#include <bits/stdc++.h>
using namespace std;
ifstream in("zebughil.in");
ofstream out("zebughil.out");
const int NMAX = 17;
int dp[1 << NMAX + 1][NMAX + 1], v[NMAX];
int main() {
for(int test = 1; test <= 3; test ++) {
int n, g;
in >> n >> g;
for(int i = 0; i < n; i ++)
in >> v[i];
for(int mask = 1; mask < (1 << n); mask ++) {
for(int i = 0; i <= n; i ++)
dp[mask][i] = g + 1;
for(int i = 0; i < n; i ++)
if(mask & (1 << i)) {
for(int j = 1; j <= n; j ++) {
if(dp[mask ^ (1 << i)][j] + v[i] <= g)
dp[mask][j] = min(dp[mask][j], dp[mask ^ (1 << i)][j] + v[i]);
if(dp[mask ^ (1 << i)][j - 1] <= g)
dp[mask][j] = min(dp[mask][j], v[i]);
}
}
}
int i = 1;
while(dp[(1 << n) - 1][i] > g)
i ++;
out << i << "\n";
}
return 0;
}