Pagini recente » Cod sursa (job #1625784) | Cod sursa (job #2184774) | Cod sursa (job #287860) | Cod sursa (job #797048) | Cod sursa (job #217645)
Cod sursa(job #217645)
#include<cstdio>
#include<cstring>
#include<deque>
int n,g,i,j,a[1<<18],v[20],max;
std::deque<int> x1,x2;
int main()
{
freopen("zebughil.in","r",stdin);
freopen("zebughil.out","w",stdout);
for(int xyz = 1; xyz <= 3; xyz++)
{
scanf("%d %d",&n,&g);
max=(1<<n)-1;
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
memset(a,-1,sizeof(a));
a[0]=g;
i=1;
x1.clear();
x2.clear();
x1.push_back(0);
while(a[max] == -1)
{
if(x1.size() == 0)
{
for(int k = 0; k<x2.size();k++)
{
x1.push_back(x2[k]);
a[x2[k]]=g;
}
x2.clear();
i++;
}
while(x1.size())
{
j = x1[0];
x1.pop_front();
x2.push_back(j);
for(int k=1;k<=n;k++)
if(!( j & (1<<(k-1))) && a[j]>=v[k])
if(a[j]-v[k] > a[j+k])
{
a[j+k]=a[j]-v[k];
x1.push_back(j+k);
}
}
}
printf("%d\n",i);
}
return 0;
}