Cod sursa(job #297833)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 aprilie 2009 17:31:34
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>

using namespace std;

#define Nmax 20011
#define Lmax 200

int v[Nmax],n,frecv[Lmax+1],gmax,suma,lmax,g,i,j,nr,sol[Nmax];

inline int max(int a, int b)
{
	return a>b?a:b;
}

inline int min(int a, int b)
{
	return a<b?a:b;
}

void read_data()
{
	freopen("ghiozdan.in","r",stdin);
	freopen("ghiozdan.out","w",stdout);
	
	scanf("%d %d", &n,&g);
	for (i=0;i<n;++i)
	{
		scanf("%d", &v[i]); 
		lmax=max(lmax,v[i]);
		frecv[v[i]]++;
	}
}

void solve()
{
	gmax=g;
	nr=0;
	for (i=Lmax;i>=1;--i)
	{
		if (g>=i && frecv[i]!=0)
		{
			frecv[i]--;
			g-=i;
			nr++;
			sol[nr]=i;
		}
	}
	
}

void write_data()
{
	printf("%d %d\n", gmax,nr);
	for (i=1;i<=nr;++i)
		 printf("%d\n", sol[i]);
}

int main()
{
	read_data();
	solve();
	write_data();
	return 0;
}