Cod sursa(job #308044)

Utilizator funkydvdIancu David Traian funkydvd Data 25 aprilie 2009 21:44:41
Problema Economie Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include<fstream>
#include<stdlib.h>
using namespace std;
ifstream f1 ("economie.in");
ofstream f2 ("economie.out");
int 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];
   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]]=2;
      for (j=1; j<=s; j++) if (v[j]!=0) v[j+val[i]]=1; 
      nr++;
      i++;
      }
   nr--;
   f2<<nr<<endl;
   for (i=1; i<=n; i++) if (v[val[i]]==2) f2<<val[i]<<" ";
   return 0;
}