Cod sursa(job #111320)

Utilizator swift90Ionut Bogdanescu swift90 Data 29 noiembrie 2007 14:04:42
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<stdio.h>
#include<algorithm>
using namespace std;
int nr[1010],ap[50100],sol[1010];
int main(){
	freopen("economie.in","r",stdin);
	freopen("economie.out","w",stdout);
	int n,i,j,max,min;
	
	scanf("%d",&n);
	max=0;
	for(i=0;i<n;++i){
		scanf("%d",&nr[i]);
		if(nr[i]>max)
			max=nr[i];
	}
	
	sort(nr,nr+n);
	min=0;
	for(i=0;i<n;++i){
		if(ap[nr[i]]==0){
			sol[min++]=nr[i];
			ap[nr[i]]=1;
			for(j=1;j<=max;++j){
				if(ap[j] && j+nr[i]<50010)
					ap[j+nr[i]]=1;
			}
		}
	}
	
	printf("%d\n",min);
	for(i=0;i<min;++i)
		printf("%d\n",sol[i]);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}