Cod sursa(job #65548)

Utilizator blasterzMircea Dima blasterz Data 10 iunie 2007 19:03:12
Problema Zebughil Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
using namespace std;
#include <cstdio>
#include <algorithm>
#include <string>
#define maxn 32
int x[maxn], n, G;

void solve()
{
	int i, j, t;
	int s[maxn];
	memset(s, 0, sizeof(s));
	sort(x+1, x+n+1);
	reverse(x+1, x+n+1);
	for(t=1;t<=n;++t)
	{
		for(i=1;i<=t;++i) 
		s[i]=x[i];
		int ok=1;
		for(i=1;i<=t;++i) if(s[i]>G) { ok=0; break;}
		
		if(ok==0) continue;
		ok=1;
		for(i=t+1;i<=n;++i)
		{
			int oki=0;
			for(j=1;j<=t;++j) 
				if(s[j]+x[i]<=G)
				{
					s[j]+=x[i];
					oki=1;
					break;
				}
				
			if(oki==0)ok=0; 
		}
		//for(i=1;i<=t;++i) printf("%d ", s[i]);
		//printf("\n");
	
		
		for(i=1;i<=t;++i) if(s[i]>G) { ok=0; break;}
		if(ok)
		{
			printf("%d\n", t); return ;
		}
	}
}

int main()
{
	int t=3;
	freopen("zebughil.in", "r", stdin);
	freopen("zebughil.out", "w", stdout);
	while(t--)
	{
		scanf("%d %d\n", &n, &G);
		for(int i=1;i<=n;++i) scanf("%d ", x+i);
		solve();
	}
	return 0;
}