Cod sursa(job #235847)

Utilizator Bogdan_tmmTirca Bogdan Bogdan_tmm Data 26 decembrie 2008 00:08:10
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<iostream>
#include<stdio.h>
FILE *f=fopen("economie.in","r"),*g=fopen("economie.out","w");
unsigned short v[50005];long a[1005],aux[1005],nr,j,i,n;
void qsort(int st,int dr)
{
 int i=st,j=dr,aux;
 int x=a[(st+dr)/2];
 do
 {
  while(a[i]<x) i++;
  while(a[j]>x) j--;
  if(i<=j)
  {
   aux=a[i];a[i]=a[j];a[j]=aux;
   i++;j--;
  }
 }
 while(i<=j);
 if(st<j) qsort(st,j);
 if(i<dr) qsort(i,dr);
}
int main()
{
 fscanf(f,"%ld",&n);
 for(i=1;i<=n;i++)
  fscanf(f,"%ld",&a[i]);
 qsort(1,n);
 for(i=1;i<=n;i++)
  if(v[a[i]]==0)
  {
   nr++;
   aux[nr]=a[i];
   v[a[i]]=1;
  for(j=a[i]+1;j<=50000;j++)
   if(v[j-a[i]])
    v[j]=1;
  }
 fprintf(g,"%ld\n",nr);
 for(i=1;i<=nr;i++)
   fprintf(g,"%ld\n",aux[i]);
return 0;
}