Pagini recente » Rating Litcanu Tiana (TianaInfo) | Cod sursa (job #1198828) | Cod sursa (job #480697) | Cod sursa (job #948654) | Cod sursa (job #1119434)
#include <fstream>
using namespace std;
int maxConf, n, g, w[20], D[140010][20], sol;
void initialise()
{
for(int i = 0; i < maxConf; i++)
for(int trucks = 0; trucks <= n; trucks++)
D[i][trucks] = -1;
D[0][0] = 0;
}
int main()
{
ifstream fi("zebughil.in");
ofstream fo("zebughil.out");
int tests = 3;
while(tests--)
{
fi >> n >> g;
for(int i = 0; i < n; i++) fi >> w[i];
maxConf = (1<<n);
initialise();
for(int i = 0; i < maxConf; i++)
for(int trucks = 0; trucks <= n; trucks++)
if(D[i][trucks] >= 0)
for(int k = 0; k < n; k++)
if(!(i&(1<<k)))
{
if(w[k] <= D[i][trucks])
D[i+(1<<k)][trucks] = max(D[i][trucks] - w[k], D[i+(1<<k)][trucks]);
else
D[i+(1<<k)][trucks+1] = max(g - w[k], D[i+(1<<k)][trucks+1]);
}
sol = 0;
for(int i = 1; i <= n and !sol; i++)
if(D[maxConf-1][i] >= 0) sol = i;
fo << sol << "\n";
}
return 0;
}