Pagini recente » Cod sursa (job #1479051) | Cod sursa (job #168341) | Cod sursa (job #458542) | Cod sursa (job #3037724) | Cod sursa (job #3174803)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
const int inf = 1e9;
int n, g, v[20], pt[20], dp[(1 << 17) + 5][2];
int main(){
for (int tt = 1; tt <= 3; ++tt){
fin >> n >> g;
int p = (1 << n) - 1;
for (int i = 1; i <= p; ++i) dp[i][0] = inf;
dp[0][0] = 0;
pt[0] = 1;
for (int i = 1; i <= n; ++i){
fin >> v[i];
pt[i] = pt[i - 1] * 2;
}
int ans = n;
int t = 1;
for (int j = 1; j <= n; ++j){
dp[0][t] = inf;
for (int i = 1; i <= p; ++i){
dp[i][t] = inf;
for (int k = 0; k < n; ++k){
if (i & (1 << k)){
if (dp[i - pt[k]][t] + v[k + 1] <= g)
dp[i][t] = min(dp[i][t], dp[i - pt[k]][t] + v[k + 1]);
if (dp[i - pt[k]][1 - t] <= g)
dp[i][t] = min(dp[i][t], v[k + 1]);
}
}
}
if (dp[p][t] <= g){
fout << j << "\n";
break;
}
t = 1 - t;
}
}
return 0;
}