Pagini recente » Cod sursa (job #69470) | Cod sursa (job #618571) | Cod sursa (job #2840479) | Cod sursa (job #1190916) | Cod sursa (job #1766575)
#include <stdio.h>
#include <algorithm>
using namespace std;
const int MAX = 18;
int v[MAX];
int dp[MAX][1 << MAX];
int main()
{
FILE *fin, *fout;
fin = fopen("zebughil.in", "r");
fout = fopen("zebughil.out", "w");
for(int test = 1; test <= 3; test++)
{
int n, g;
fscanf(fin, "%d%d", &n, &g);
for(int i = 0; i < n; i++)
fscanf(fin, "%d", &v[i]);
for(int i = 0; i <= n; i++)
for(int j = 1; j < (1 << n); j++)
dp[i][j] = -1;
for(int k = 1; k <= n; k++)
for(int i = 1; i < (1 << n); i++)
for(int j = 0; j < n; j++)
if(i & (1 << j))
if(dp[k - 1][i ^ (1 << j)] != -1)
dp[k][i] = max(dp[k][i], g - v[j]);
else
if(dp[k][i ^ (1 << j)] >= v[j])
dp[k][i] = max(dp[k][i], dp[k][i ^ (1 << j)] - v[j]);
int j = 1;
int i = (1 << n) - 1;
while(dp[j][i] == -1)
j++;
fprintf(fout, "%d\n", j);
}
return 0;
}