Cod sursa(job #264178)

Utilizator doru.nituNitu Doru Constantin doru.nitu Data 21 februarie 2009 17:24:16
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>
FILE *f=fopen("economie.in","r"),
     *g=fopen("economie.out","w");
int a[1001],b[50001],c[1001],p,i,j,k,n,ok,aux,d[500];
int main()
{ fscanf(f,"%d",&n);
  for(i=1;i<=n;i++) fscanf(f,"%d",&a[i]);
  ok=1;
  while(ok) { ok=0;
              for(i=1;i<n-p;i++) if(a[i]>a[i+1]) { aux=a[i];
                                                  a[i]=a[i+1];
                                                  a[i+1]=aux;
                                                  ok=1;
                                                }
              p++;
            }
  if(a[1]==1) { fprintf(g,"1\n1");fclose(f);fclose(g);return 0;}
  for(i=1;i<=n;i++) b[a[i]]=a[i];
  p=0;
  for(i=1;i<=n;i++)if(a[i]!=a[i-1]) {  if(b[a[i]])for(k=2;k*a[i]<=a[n];k++) if(b[k*a[i]]) b[k*a[i]]=0;
                                       if(b[a[i]]){ p++,c[p]=b[a[i]];
                                                    for(j=1;j<=i;j++) { d[j]=d[j]+b[a[i]];
                                                                        if(i>=2) if(b[d[j]]) b[d[j]]=0;
                                                                      }
                                                  }
                                    }

  fprintf(g,"%d\n",p);
  for(i=1;i<=p;i++) fprintf(g,"%d\n",c[i]);
  fclose(f);
  fclose(g);
  return 0;
}