Cod sursa(job #481139)

Utilizator loginLogin Iustin Anca login Data 30 august 2010 18:55:56
Problema Zebughil Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
# include <fstream>
# include <iostream>
using namespace std;
int n, g, v[20], best[(1<<17)+1][32], sol;

void go (int i, int j)
{
	for(int k=1;k<=n;++k)
		if ((i&(1<<k))==0)
		{
			if (v[k]<=best[i][j])
			{
				best[i+(1<<k)][j]-=v[k];
				go(i+(1<<k), j);
			}
			else
			{
				best[i+(1<<k)][j+1]=g-v[k];
				go(i+(1<<k), j+1);
			}
		}
	if ((1<<n)-1==i && j<sol)
		sol=j;
}

int main ()
{
	ifstream fin ("zebughil.in");
	ofstream fout ("zebughil.out");
	for(int i=1;i<4;++i)
	{
		fin>>n>>g;
		for(int i=1;i<=n;++i)
			fin>>v[i];
		sol=1<<5;
		for(int i=1;i<=n;++i)
		{
			best[1<<i][1]=g-v[i];
			go(i, 1);
		}
		fout<<sol<<"\n";
	}
	return 0;
}