Pagini recente » Cod sursa (job #2470651) | Cod sursa (job #290800) | Cod sursa (job #1423368) | Cod sursa (job #2840454) | Cod sursa (job #112289)
Cod sursa(job #112289)
#include <stdio.h>
#include <stdlib.h>
FILE *in = fopen("economie.in","r");
FILE *out = fopen("economie.out","w");
int v[1001],n,max;
int w[50001];
int m[1001],e;
int comp(const void *a, const void *b)
{
int *aa=(int*) a, *bb=(int*) b;
int x=*aa, y=*bb;
if (x<y)
return -1;
if (x>y)
return 1;
return 0;
}
int main()
{
int i,j;
fscanf(in,"%d",&n);
for (i=0; i<n; i++)
fscanf(in,"%d",&v[i]);
qsort(v,n,sizeof(v[0]),comp);
max=v[n-1];
m[0]=v[0];
e=1;
w[0]=1;
for (i=0; i<=max; i++)
if (w[i]==1 && i+m[e-1]<=50000)
w[i+m[e-1]]=1;
for (i=1; i<n; i++)
if (w[v[i]]!=1)
{
m[e++]=v[i];
for (j=0; j<=max; j++)
if (w[j]==1 && j+m[e-1]<=50000)
w[j+m[e-1]]=1;
}
fprintf(out,"%d\n",e);
for (i=0; i<e; i++)
fprintf(out,"%d\n",m[i]);
fclose(in);
fclose(out);
return 0;
}