Cod sursa(job #567169)

Utilizator rootsroots1 roots Data 29 martie 2011 19:45:50
Problema Economie Scor 100
Compilator cpp Status done
Runda 101 Marime 0.63 kb
#include <stdio.h>
#include <string.h>
#include <algorithm>

#define Dim1 1001
#define Dim2 50001

using namespace std;

char ok[Dim1],p[Dim2];
int v[Dim1];

int main()
{
	int i,j,nr,N;

	freopen("economie.in","r",stdin);

	scanf("%d",&N);
	for(i=0;i<N;i++) scanf("%d",&v[i]);

	sort(v,v+N);

	memset(ok,0,sizeof(ok));
	memset(p,0,sizeof(p));
	p[0]=1;
	nr=0;

	for(i=0;i<N;i++)
		if(!p[v[i]])
		{
			nr++;
			ok[i]=1;
			for(j=0;j<=Dim2-v[i]-1;j++)
				if(p[j]) p[j+v[i]]=1;
		}

	freopen("economie.out","w",stdout);

	printf("%d\n",nr);
	for(i=0;i<N;i++)
		if(ok[i]) printf("%d\n",v[i]);

	return 0;
}