Cod sursa(job #490419)

Utilizator cosmyoPaunel Cosmin cosmyo Data 6 octombrie 2010 15:49:02
Problema Economie Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include<fstream>
#include<algorithm>
using namespace std;
int v[1005],x[50005],nr,n,sol[1004];
int main()
{ifstream fin("economie.in");
 ofstream fout("economie.out");

    fin>>n;
    int i,j;
        for(i=1;i<=n;++i)
         fin>>v[i];
 x[0]=1;
 sort(v+1,v+n+1);int m=n;
for(i=1;i<=m;++i)
  if(v[i]==v[i+1])
   ;
   else
   v[++n]=v[i];
 for(i=m+1;i<=n;++i)
  v[i-m]=v[i];
 n-=m;
  for(i=1;i<=n;++i)
   if(!x[v[i]])
    {sol[++nr]=v[i];
      for(j=0;j<=50000&&nr<n;++j)
        if(j+v[i]<=50000)
            if(x[j]&&x[j+v[i]]==0)
                x[j+v[i]]=1;
    }
 fout<<nr<<'\n';
 for(i=1;i<=nr;++i)
  fout<<sol[i]<<" ";

 fout.close();
 fin.close();

return 0;
}