Pagini recente » Cod sursa (job #2609466) | Cod sursa (job #1944389) | Cod sursa (job #573465) | Borderou de evaluare (job #1900537) | Cod sursa (job #3172986)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
long long n,g,v[100],d[3000001][3];
void solve()
{
fin>>n>>g;
for(int i=0;i<n;i++){
fin>>v[i];
}
long long mers=(1<<n)-2;
for(int i=1;i<=mers+1;i++){
d[i][1]=n+1;
d[i][2]=0;
}
d[0][2]=0;
d[0][1]=1;
for(int i=1;i<=mers+1;i++)
{
for(int p=0;p<n;p++)
{
if(i&(1<<p))
{
int l=i-(1<<p);
if(d[l][2]+v[p]<=g)
{
if(d[l][1]<d[i][1] || (d[l][1]==d[i][1] && d[l][2]+v[p]<d[i][2]))
{
d[i][1]=d[l][1];
d[i][2]=d[l][2]+v[p];
}
}
else if(d[l][1]+1<d[i][1] || (d[l][1]+1<d[i][1] && v[p]<d[i][2]))
{
d[i][1]=d[l][1]+1;
d[i][2]=v[p];
}
}
}
}
fout<<d[(1<<n)-1][1]<<"\n";
}
int main()
{
for(int p=1;p<=3;p++)
solve();
return 0;
}