Cod sursa(job #202909)

Utilizator Matei14Popa-Matei Mihai Matei14 Data 12 august 2008 09:25:31
Problema Ghiozdan Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include<stdio.h>
#define INF 31313
unsigned short v[80000],nr[300],a[22222],t[80000];
int main(){
	int x=0,i,j,k,n,g;
	freopen("ghiozdan.in","r",stdin);
	freopen("ghiozdan.out","w",stdout);
	scanf("%d%d",&n,&g);
	for(i=0;i<n;++i)
		scanf("%d",&k),nr[k]++;
	n=0;
	for(i=250;i>0;--i)
		for(j=0;j<nr[i];++j) a[n++]=i;
	for(i=1;i<=g;++i) v[i]=INF;
	v[0]=0;
	for(i=0;i<n;++i){
		k=a[i];
		x+=k;
		if(x>g)
			x=g;
		for(j=x;j>=k;--j)
			if(v[j-k]+1<v[j])
				v[j]=v[j-k]+1,t[j]=k;
			if(v[g]<INF)break;
	}
	while(v[g]==INF) g--;
	printf("%d %d\n",g,v[g]);
	while(g) printf("%d\n",t[g]),g-=t[g];
	return 0;
}