Pagini recente » Cod sursa (job #2830878) | Cod sursa (job #2869026) | Cod sursa (job #1779444) | Cod sursa (job #392213) | Cod sursa (job #3172700)
#include <fstream>
#include <cstring>
#include <climits>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
const long long INF = LLONG_MAX/2;
long long n,m;
long long v[18];
long long d[(1<<17)+5][18];
bool get_bit(int nr,int poz)
{
return (nr>>poz)&1;
}
void solve()
{
fin>>n>>m;
for(int i=0;i<=(1<<n);i++)
for(int j=1;j<=n;j++)
d[i][j]=INF;
for(int i=0;i<n;i++)
fin>>v[i],d[(1<<i)][1]=v[i];
for(int i=0;i<(1<<n);i++)
for(int j=1;j<n;j++)
if(d[i][j]!=INF)
for(int x=0;x<n;x++)
if(!get_bit(d[i][j],x)){
if(d[i][j] + v[x] <= m)
d[i+(1<<x)][j] = min(d[i+(1<<x)][j],d[i][j]+v[x]);
d[i+(1<<x)][j+1]=min(d[i+(1<<x)][j+1],v[x]);
}
for(int i=1;i<=n;i++)
{
if(d[(1<<n)-1][i]!=INF){
fout<<i<<'\n';
return;
}
}
}
int main()
{
for(int i=1;i<4;i++)
solve();
}