Cod sursa(job #491447)

Utilizator funkydvdIancu David Traian funkydvd Data 11 octombrie 2010 12:51:44
Problema Zebughil Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include<fstream>
#define pentru(i,a,b) for(int i=a; i<=b; i++)
#define inf 2000000001
using namespace std;
ifstream f1 ("zebughil.in");
ofstream f2 ("zebughil.out");
int b[1<<20][20],v[20],a[20],c[20];
int main()
{
	int n,g;
	pentru(k,1,3)
	{
		f1>>n>>g;
		pentru(i,1,n) f1>>v[i];
		pentru(i,0,(1<<n)-1)
			pentru(j,0,n) b[i][j]=inf;
		b[0][1]=0;
		pentru(i,0,(1<<n)-1)
			pentru(j,0,n) 
				if (b[i][j]!=inf )
				pentru(t,0,n-1)
				{
					int a=1<<t;
					int ok=a&i;
					if (!ok)
					{
						ok=i|a;
						if (b[i][j]+v[t+1]<=g) b[ok][j]=min(b[ok][j],b[i][j]+v[t+1]);
							else b[ok][j+1]=min(b[ok][j+1],v[t+1]);
					}
				}
		int i;
		for (i=0; i<n; i++)
			if (b[(1<<n)-1][i]!=inf) break;
		f2<<min(n,i)<<"\n";
	}
	return 0;
}