Pagini recente » Cod sursa (job #256379) | Cod sursa (job #145144) | Cod sursa (job #3126895) | Cod sursa (job #660125) | Cod sursa (job #283904)
Cod sursa(job #283904)
#include <stdio.h>
FILE *f= fopen("economie.in","r");
FILE *g= fopen("economie.out","w");
char ok[50001];
int merge(int x,int min[],int n)
{
int i,j;
ok[0]=1;
for(i=1;i<=x;i++)
ok[i]=0;
for(i=1;i<=n;i++)
{
for(j=0;j<=x;j++)
if(ok[j]==1)
ok[j+min[i]]=1;
if(ok[x]==1)
break;
}
return (ok[x]==0);
}
int main()
{
int ax,n,a[1001],max,min[1001],k=0;
int i,j;
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&a[i]);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(a[i]>a[j])
{
ax=a[i];
a[i]=a[j];
a[j]=ax;
}
for(i=1;i<=n;i++)
if(merge(a[i],min,k))
min[++k]=a[i];
fprintf(g,"%d\n",k);
for(i=1;i<=k;i++)
fprintf(g,"%d\n",min[i]);
return 0;
}