Cod sursa(job #237435)

Utilizator ConsstantinTabacu Raul Consstantin Data 29 decembrie 2008 20:13:05
Problema Economie Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include<stdio.h>
int i,j,k,l,m,n,nr,sol[1011],viz[50011],v[1011],p,max;
int main(){
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]);
        if(v[i]>max)max=v[i];
        if(v[i]==1)
                {fprintf(g,"%d\n%d",1,1);
                        fclose(f);
                        fclose(g);
                        return 0;}
      }
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
        if(v[i]>v[j]){
                m=v[i];
                v[i]=v[j];
                v[j]=m;}
for(i=1;i<=n;i++)
        {if(!viz[v[i]])
                {sol[0]++;
                sol[sol[0]]=v[i];viz[v[i]]=1;
                for(j=1;j<=max-v[i];j++)
                        if(viz[j]||j%v[i]==0)
                                viz[j+v[i]]=1;
               }
         }
fprintf(g,"%d\n",sol[0]);
for(i=1;sol[i];i++)
        fprintf(g,"%d\n",sol[i]);
        
fclose(f);
fclose(g);
return 0;}