Pagini recente » Cod sursa (job #1441427) | Cod sursa (job #2549101) | Cod sursa (job #232434) | Cod sursa (job #3164298) | Cod sursa (job #2592715)
#include <fstream>
using namespace std;
ifstream cin ("zebughil.in");
ofstream cout ("zebughil.out");
const int INF = (int)1e6;
int n, g;
int v[18], s[131073], dp[131073];
int main() {
for(int t = 1; t <= 3; t++) {
cin >> n >> g;
for(int i = 1; i <= n; i++)
cin >> v[i];
dp[0] = 0;
for(int i = 1; i < (1 << n); i++) {
s[i] = 0;
for(int j = 1; j <= n; j++) {
if(i & (1 << (j - 1))) {
if(s[i] > v[i] + j) {
s[i] = g + 1;
break;
}
s[i] += v[j];
}
}
dp[i] = INF;
for(int j = i; j; j = (j - 1) & i) {
if(s[j] <= g)
dp[i] = min(dp[j ^ i] + 1, dp[i]);
}
}
cout << dp[(1 << n) - 1] << "\n";
for(int i = 1; i < (1 << n); i++)
dp[i] = INF;
}
return 0;
}