Cod sursa(job #280384)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 13 martie 2009 12:47:56
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<stdio.h>
#include<stdlib.h>
FILE *f=fopen("economie.in","r"),
     *g=fopen("economie.out","w");
int a[1001],b[50001],i,j,ok,n,p,x,i1;
fcomp(const void*a,const void*b)
{ return *(int*)a-*(int*)b;
}
int atinse()
{ for(i1=1;i1<=n;i1++) if(!b[a[i1]]) return 0;
 return 1;
}
int main()
{ fscanf(f,"%d",&n);
  for(i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
  qsort(a+1,n,sizeof(int),fcomp);
  if(a[1]==1) { fprintf(g,"1\n1\n");
                fclose(f);
                fclose(g);
                return 0;
              }
 b[0]=1;
 ok=1;
 for(i=1;i<=n&&ok;i++) { for(j=0;j<a[n]&&ok;j++) if(b[j]&&!b[j+a[i]]) b[j+a[i]]=a[i];
                         x=atinse();
                         if(x) ok=0,p=i;
                       }
 fprintf(g,"%d\n",p);
 for(i=1;i<=p;i++) fprintf(g,"%d\n",a[i]);
 fclose(f);
 fclose(g);
 return 0;
}