Cod sursa(job #18129)

Utilizator Binary_FireFlorin Pogocsan Binary_Fire Data 18 februarie 2007 09:51:22
Problema Ghiozdan Scor 54
Compilator cpp Status done
Runda preONI 2007, Runda 2, Clasele 11-12 Marime 0.65 kb
#include<stdio.h>
#define fin  "ghiozdan.in"
#define fout "ghiozdan.out"
#define Smax 75001

int N,G,viz[Smax],min[Smax],fat[Smax],sol;

int main() {
int i,j,a;
	freopen(fin,"r",stdin); freopen(fout,"w",stdout);
	scanf("%i%i",&N,&G);

	viz[0]=1;

	for (i=1;i<=N;++i) {
		scanf("%i",&a);
		for (j=G;j>=0;--j) 

			if (viz[j] && j+a<=G && (min[j+a]>min[j]+1 || !viz[j+a])) {
				
				viz[j+a]=1;
				min[j+a]=min[j]+1;
				fat[j+a]=a;
			}
	}

	//for (j=1;j<=G;++j) fprintf(stderr,"%i %i\n",min[j],fat[j]);

	for (j=G;viz[j]==0;--j);

	printf("%i %i\n",j,min[j]);

	while (j!=0) {
		printf("%i\n",fat[j]);
		j-=fat[j];
	}		
	
	fclose(stdin); fclose(stdout);

	return 0;
}