Cod sursa(job #237446)

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