Pagini recente » Cod sursa (job #2235633) | Cod sursa (job #752670) | Cod sursa (job #1260031) | Cod sursa (job #1204943) | Cod sursa (job #2439128)
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int Power_3(int n) {
int ret = 1;
for (int i = 0; i < n; ++i, ret *= 3);
return ret;
}
int main() {
ifstream cin("zebughil.in");
ofstream cout("zebughil.out");
for (int test = 0; test < 3; ++test) {
ll n, g;
cin >> n >> g;
vector < ll > cost(n);
for (int i = 0; i < n; ++i) {
cin >> cost[i];
}
const int lim_2 = 1 << n;
const int lim_3 = Power_3(n);
vector < int > DP(lim_2, n);
DP[0] = 0;
for (int i = 0; i < lim_3; ++i) {
ll sum = 0;
int maskQuerry = 0;
int maskUpdate = 0;
for (int j = 0, main_3 = i, bit = 1; j < n && main_3 > 0; ++j, bit *= 2) {
int rem = main_3 % 3;
main_3 /= 3;
if (rem == 1) {
sum += cost[j];
if (sum > g) {
break;
}
} else if (rem == 2) {
maskQuerry += bit;
}
if (rem > 0) {
maskUpdate += bit;
}
}
if (sum <= g) {
DP[maskUpdate] = min(DP[maskUpdate], DP[maskQuerry] + 1);
}
}
cout << DP[(1 << n) - 1] << endl;
}
return 0;
}