Pagini recente » Cod sursa (job #2588144) | Cod sursa (job #555349) | Cod sursa (job #2544458) | Cod sursa (job #299011) | Cod sursa (job #3173751)
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int NMAX = 19;
int n,g,z[NMAX];
pii dp[(1<<NMAX)];
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
void minSelf(auto &a, auto b){
a = min(a, b);
}
int main()
{
int t = 3;
while(t--){
fin >> n >> g;
for(int i = 1; i <= n; i++){
fin >> z[i];
}
for(int i = 0; i < (1<<n); i++){
dp[i] = {n+1, 0};
}
dp[0] = {1, 0};
for(int i = 0; i < (1<<n); i++){
for(int j = 0; j < n; j++){
int bt = (i>>j)&1;
if(bt == 0){
pii nw = dp[i];
if(nw.second+z[j+1] > g){
nw.second = z[j+1];
nw.first++;
}else{
nw.second += z[j+1];
}
minSelf(dp[i|(1<<j)], nw);
}
}
}
fout << dp[(1<<n)-1].first << "\n";
}
return 0;
}