Cod sursa(job #199597)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 19 iulie 2008 19:19:40
Problema Ghiozdan Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <stdio.h>
#define INF 30000
#define N 75002
int g[N],f[201],n,G,v[N];
void citeste(){
	int x;
	freopen("ghiozdan.in","r",stdin);
	freopen("ghiozdan.out","w",stdout);
	scanf("%d%d",&n,&G);
	for(int i=1;i<=n;i++){
		scanf("%d",&x);
		f[x]++;
	}
}
void solve(){
	int i,j,k;
	for(i=1;i<=G;i++)
		v[i]=INF;
	for(i=1;i<=200;i++)
		for(k=G-i;k>=0;k--)
				if(v[k]!=INF)
					for(j=1;j<=f[i];j++)
						if(k+i*j<=G && v[k+i*j]>v[k+i*(j-1)]+1)
							v[k+i*j]=v[k+i*(j-1)]+1;
						else break;
	for(i=G;i>=1;i--)
		if (v[i]!=INF){
			printf("%d %d\n",i,v[i]);
			break;
		}
}
int main(){
	citeste();
	solve();
	return 0;
}