Pagini recente » Cod sursa (job #840013) | Cod sursa (job #514373) | Cod sursa (job #1088180) | Cod sursa (job #56888) | Cod sursa (job #3172703)
#include <fstream>
#include <cstring>
#include <climits>
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
const long long INF = UINT_MAX;
unsigned int n,m;
unsigned int v[18];
unsigned int d[(1<<17)+5][18];
bool get_bit(unsigned 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(i,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();
}