Pagini recente » Cod sursa (job #1835533) | Cod sursa (job #46585) | Cod sursa (job #2775936) | Cod sursa (job #2158416) | Cod sursa (job #491447)
Cod sursa(job #491447)
#include<fstream>
#define pentru(i,a,b) for(int i=a; i<=b; i++)
#define inf 2000000001
using namespace std;
ifstream f1 ("zebughil.in");
ofstream f2 ("zebughil.out");
int b[1<<20][20],v[20],a[20],c[20];
int main()
{
int n,g;
pentru(k,1,3)
{
f1>>n>>g;
pentru(i,1,n) f1>>v[i];
pentru(i,0,(1<<n)-1)
pentru(j,0,n) b[i][j]=inf;
b[0][1]=0;
pentru(i,0,(1<<n)-1)
pentru(j,0,n)
if (b[i][j]!=inf )
pentru(t,0,n-1)
{
int a=1<<t;
int ok=a&i;
if (!ok)
{
ok=i|a;
if (b[i][j]+v[t+1]<=g) b[ok][j]=min(b[ok][j],b[i][j]+v[t+1]);
else b[ok][j+1]=min(b[ok][j+1],v[t+1]);
}
}
int i;
for (i=0; i<n; i++)
if (b[(1<<n)-1][i]!=inf) break;
f2<<min(n,i)<<"\n";
}
return 0;
}