Cod sursa(job #490283)

Utilizator antoanelaAntoanela Siminiuc antoanela Data 5 octombrie 2010 20:17:24
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>
#define lmax 131100

int n, g, v[20], a[lmax], b[lmax];

int main()
{
	freopen("zebughil.in","r",stdin);
	freopen("zebughil.out","w",stdout);
	int i, p, sa, sb, ca, cb, x, t=3;
	while (t--)
	{
		scanf("%d %d",&n,&g);
		for (i=0; i<n; i++) scanf("%d",&v[i]);
		for (p=1; p<(1<<n); p++)
		{
			sa=20;
			sb=0;
			for (i=0; i<n; i++)
				if (p == (p|(1<<i)))
				{
					x=p^(1<<i);
					if (b[x]>=v[i]) 
					{ 
						cb=b[x]-v[i];
						ca=a[x];
					} else
					{
						cb=g-v[i];
						ca=a[x]+1;
					}
					if (ca<sa)
					{
						sa=ca;
						sb=cb;
					} else
					if (ca==sa && cb>sb) sb=cb;
				}
			a[p]=sa;
			b[p]=sb;
		}
		printf("%d\n",a[(1<<n)-1]);
	}
}