Cod sursa(job #137977)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 17 februarie 2008 18:37:35
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include <stdio.h>
#include <algorithm>
using namespace std;
int v[2005],w[2005],n,k=0,u[100001];
int main(){
	int i,ok,j;
	FILE*f=fopen("economie.in","r");
	FILE*g=fopen("economie.out","w");
	fscanf(f,"%d",&n);
	for(i=1;i<=n;i++)
		fscanf(f,"%d",&v[i]);
	sort(v+1,v+n+1);
	u[0]=1;
	for(i=1;i<=n;i++){
		if(!u[v[i]]) {
			w[++k]=v[i];
			for(j=0;j<=v[n];j++)
				if(u[j] && w[k]+j<=v[n]) u[j+w[k]]=1;
		}			
	}
	fprintf(g,"%d\n",k);
	for(i=1;i<=k;i++)
		fprintf(g,"%d\n",w[i]);
	return 0;
}