Pagini recente » Cod sursa (job #1187672) | Cod sursa (job #1037519) | Cod sursa (job #2081698) | Cod sursa (job #214824) | Cod sursa (job #1473550)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
const int NMAX=20;
const int LIMIT=(1<<17)+5;
int n,G,a[NMAX],dp[LIMIT][NMAX];
inline int zeros(int x)
{
return x^(x&(x-1));
}
int main()
{
int i,j,l,sol,aux,conf;
for (l=1;l<=3;l++)
{
fin>>n>>G;
for (i=0;i<n;i++) fin>>a[i];
for (i=0;i<(1<<n);i++)
for (j=1;j<=n;j++)
dp[i][j]=-1;
for (i=0;i<n;i++) dp[1<<i][1]=G-a[i];
for (conf=1;conf<(1<<n);conf++)
if (conf!=zeros(conf))
for (j=0;j<n;j++)
if (conf&(1<<j))//pun pe j la sfarsit in permutare
{
aux=conf-(1<<j);
for (i=1;i<=n;i++)
if (dp[aux][i]>=0)
{
if (dp[aux][i]<a[j]) dp[conf][i+1]=max(dp[conf][i+1],G-a[j]);
else dp[conf][i]=max(dp[conf][i],dp[aux][i]-a[j]);
}
}
for (i=n;i>=1;i--)
if (dp[(1<<n)-1][i]>=0)
sol=i;
fout<<sol<<"\n";
}
return 0;
}