Cod sursa(job #308048)

Utilizator funkydvdIancu David Traian funkydvd Data 25 aprilie 2009 21:53:41
Problema Economie Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream f1 ("economie.in");
ofstream f2 ("economie.out");
bool v[50001];
int compar(const void*p, const void*q)
{
   int x=*(int*)p, y=*(int*)q;
   if (x>y) return 1;
   if (x<y) return -1;
   return 0;
}
int main()
{
   int n,i,j,s,nr=0,k,val[1001],sol[1001];
   f1>>n;
   for (i=1; i<=n; i++) f1>>val[i];
   qsort (val+1, n, sizeof(val[0]), compar);
   i=1;
   s=val[n];
   while (i<=n)
     {
      while (v[val[i]]!=0 && i<=n) i++;
      v[val[i]]=1;
      for (j=1; j<=s; j++) if (v[j]!=0 && j+val[i]<=50000) v[j+val[i]]=1; 
      nr++;
      sol[nr]=val[i];
      i++;
      }
   nr--;
   f2<<nr<<endl;
   for (i=1; i<=nr; i++)  f2<<sol[i]<<" ";
   return 0;
}