Pagini recente » Cod sursa (job #2088805) | Cod sursa (job #461019) | Cod sursa (job #51306) | Cod sursa (job #3167804) | Cod sursa (job #2583722)
#include <fstream>
#define inf 10000000
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int n,t,G,dp[2][100001],i,j,v[20];
int main()
{
for(t=1;t<=3;t++){
fin>>n>>G;
for(i=1;i<=n;i++)
fin>>v[i];
for(i=1;i<=(1<<n)-1;i++)
dp[0][i]=dp[1][i]=inf;
dp[0][0]=0;
dp[1][0]=1;
int nmax=(1<<n)-1;
for(i=1;i<=nmax;i++){
for(j=0;(1<<j)<=i;j++)
if(((i>>j)&1)==1)
if(dp[0][i-(1<<j)]+v[j+1]<=G){
if(dp[1][i]>dp[1][i-(1<<j)]||(dp[1][i]==dp[1][i-(1<<j)]&&dp[0][i]>dp[0][i-(1<<j)]+v[j+1])){
dp[0][i]=dp[0][i-(1<<j)]+v[j+1];
dp[1][i]=dp[1][i-(1<<j)];
}
}
else
if(dp[1][i]>dp[1][i-(1<<j)]+1||(dp[1][i]==dp[1][i-(1<<j)]+1&&dp[0][i]>v[j+1]))
{
dp[0][i]=v[j+1];
dp[1][i]=dp[1][i-(1<<j)]+1;
}
}
fout<<dp[1][nmax]<<'\n';
}
return 0;
}