Pagini recente » Cod sursa (job #1493472) | Cod sursa (job #2394195) | Cod sursa (job #2367675) | Cod sursa (job #2545041) | Cod sursa (job #3174573)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
struct cv
{
long long cnt;
long long weight;
};
int n;
long long weight, i, k;
long long arr[17];
cv dp[1<<17];
int main()
{
fin>>n>>weight;
for(int ij = 1; ij <= 3; ij++)
{
fin>>n>>weight;
for(i=0; i < n; i++)
fin>>arr[i];
for(i = 1; i < (1<<n); i++)
dp[i].cnt=n+1,
dp[i].weight=0;
dp[0].cnt=1;
dp[0].weight=0;
for(k = 1; k < (1<<n); k++)
for(i=0; i < n; i++)
if( k & (1<<i) )
{
int j = k - (1<<i);
if(dp[j].weight + arr[i] <= weight)
{
if(dp[j].cnt < dp[k].cnt
||(dp[j].cnt == dp[k].cnt
&& dp[j].weight + arr[i] < dp[k].weight))
{
dp[k].cnt = dp[j].cnt;
dp[k].weight = dp[j].weight + arr[i];
}
}
else if(dp[j].cnt + 1 < dp[k].cnt
||(dp[j].cnt + 1 == dp[k].cnt
&& arr[i] < dp[k].weight))
{
dp[k].cnt = dp[j].cnt + 1;
dp[k].weight = arr[i];
}
}
fout<<dp[(1<<n)-1].cnt<<'\n';
}
return 0;
}