Pagini recente » Cod sursa (job #2690154) | Cod sursa (job #1709245) | Cod sursa (job #2284623) | Cod sursa (job #518675) | Cod sursa (job #1014915)
#include <cstdio>
#include <cstdlib>
#include <algorithm>
using namespace std;
int N, G, Dp[1 << 17][18], V[18];
int main()
{
freopen("zebughil.in", "r", stdin);
freopen("zebughil.out", "w", stdout);
for(int T = 3; T; T --)
{
scanf("%i %i", &N, &G);
for(int i = 0; i < (1 << N); ++ i)
for(int j = 1; j <= N; ++ j)
Dp[i][j] = -1;
Dp[0][1] = G;
for(int i = 0; i < N; ++ i)
scanf("%i", &V[i]);
for(int Conf = 0; Conf < (1 << N); ++ Conf)
for(int i = 0; i < N; ++ i)
if(!(Conf & (1 << i)))
for(int j = 1; j <= N; ++ j)
{
if(Dp[Conf][j] == -1) continue;
if(Dp[Conf][j] >= V[i])
Dp[Conf ^ (1 << i)][j] = max(Dp[Conf ^ (1 << i)][j], Dp[Conf][j] - V[i]);
else
Dp[Conf ^ (1 << i)][j + 1] = max(Dp[Conf ^ (1 << i)][j + 1], G - V[i]);
}
for(int i = 1; i <= N; ++ i)
if(Dp[(1 << N) - 1][i] != -1)
{
printf("%i\n", i);
break;
}
}
return 0;
}