Pagini recente » Cod sursa (job #805030) | Cod sursa (job #2330723) | Cod sursa (job #3240307) | Cod sursa (job #1238070) | Cod sursa (job #3238773)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int main(){
for(int i = 1; i <= 3; ++i){
int64_t N, G;
vector<int64_t> W;
vector<pair<int64_t, int64_t> > dp;
fin >> N >> G;
W.resize(N);
dp.resize(1 << N, make_pair(N + 1, 0));
dp[0].first = 1;
for(int64_t& x : W)
fin >> x;
for(int mask = 0; mask < (1 << N); ++mask)
for(int j = 0; j < N; ++j)
if(!(mask & (1 << j))){
if(dp[mask].second + W[j] <= G)
dp[mask ^ (1 << j)] = min(dp[mask ^ (1 << j)], make_pair(dp[mask].first, dp[mask].second + W[j]));
else
dp[mask ^ (1 << j)] = min(dp[mask ^ (1 << j)], make_pair(dp[mask].first + 1, W[j]));
}
fout << dp[(1 << N) - 1].first << '\n';
}
}