Cod sursa(job #284526)

Utilizator mihaionlyMihai Jiplea mihaionly Data 21 martie 2009 19:20:15
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <stdio.h>  
FILE *f= fopen("economie.in","r");  
FILE *g= fopen("economie.out","w");  
unsigned char ok[50040];
unsigned ax,n,a[1040],max,i,j,min[1040],k=0;
int main()  
 {  
 fscanf(f,"%d",&n);  
 for(i=1;i<=n;i++)  
  {  
  fscanf(f,"%d",&a[i]);  
  if(a[i]>max||i==1)  
   max=a[i];  
  }  
 fprintf(f,"\n");  
 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;  
    }  
 ok[0]=1;  
 for(i=1;i<=n;i++)  
  {  
  if(ok[a[i]]==0)  
   min[++k]=a[i];  
  for(j=0;j<=max;j++)  
   if(ok[j]==1)  
    ok[j+a[i]]=1;  
  }  
 fprintf(g,"%d\n",k);  
 for(i=1;i<=k;i++)  
  fprintf(g,"%d\n",min[i]);  
 return 0;  
}