Pagini recente » Cod sursa (job #2849449) | Cod sursa (job #273541) | Cod sursa (job #2795968) | Cod sursa (job #1575296) | Cod sursa (job #2453634)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream f("zebughil.in");
ofstream g("zebughil.out");
long long v[20];
struct elem
{
long long c,gr;
};
elem dp[132002];
int main()
{
long long n,gmax,i,j,l,p,k;
for(l=1;l<=3;l++)
{
f>>n>>gmax;
p=1;
for(i=1;i<=n;i++)
f>>v[i],p*=2;
p--;
for(i=1;i<=p;i++)
dp[i].c=dp[i].gr=2000000000;
dp[0].c=1;
for(i=0;i<p;i++)
for(j=1,k=1;k<=n;j*=2,k++)
if((i&j)==0)
{
if(dp[i].gr+v[k]>gmax)
{
if(dp[i|j].c>dp[i].c+1||(dp[i|j].c==dp[i].c+1&&dp[i|j].gr>v[k]))
dp[i|j].c=dp[i].c+1,dp[i|j].gr=v[k];
}
else
{
if(dp[i|j].c>dp[i].c||(dp[i|j].c==dp[i].c&&dp[i|j].gr>dp[i].gr+v[k]))
dp[i|j].c=dp[i].c,dp[i|j].gr=dp[i].gr+v[k];
}
}
g<<dp[p].c<<'\n';
}
return 0;
}