Cod sursa(job #297848)

Utilizator AndreiDDiaconeasa Andrei AndreiD Data 5 aprilie 2009 17:41:48
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,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()
{
	int i;
	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()
{
	int i,j;
	gmax=g;
	nr=0;
	for (i=Lmax;i>=1;--i)
	if (g>=i && frecv[i]!=0)
        frecv[i]--,
		g-=i,
		sol[++nr]=i;
}

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

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