Pagini recente » Cod sursa (job #2206224) | Cod sursa (job #1901387) | Cod sursa (job #3134873) | Cod sursa (job #2408504) | Cod sursa (job #314997)
Cod sursa(job #314997)
#include <cstdio>
#define MAX_N 20
#define MAX_M (1 << 17)
int N, G;
int S[MAX_M], A[MAX_M], V[MAX_N];
void solve()
{
scanf("%d %d",&N, &G);
for(int i = 0; i < N; ++i)
scanf("%d",V+i);
int M = (1 << N);
for(int i = 1; i < M; ++i)
S[i] = N+1;
for(int i = 0; i < M; ++i)
for(int j = 0; j < N; ++j)
{
if(i & (1 << j)) continue;
int act = i + (1 << j), nr = S[i], cat = A[i] - V[j];
if(cat < 0)
++nr,
cat = G - V[j];
if(nr == S[act])
if(cat > A[act])
A[act] = cat;
if(nr < S[act])
S[act] = nr,
A[act] = cat;
}
printf("%d\n",S[M-1]);
}
int main()
{
freopen("zebughil.in","rt",stdin);
freopen("zebughil.out","wt",stdout);
for(int i = 1; i < 4; ++i)
solve();
}