Cod sursa(job #491285)

Utilizator ChallengeMurtaza Alexandru Challenge Data 10 octombrie 2010 20:22:24
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>

using namespace std;

const char InFile[]="economie.in";
const char OutFile[]="economie.out";
const int MaxN=1005;
const int MaxS=50005;

ifstream fin(InFile);
ofstream fout(OutFile);

int n,s,v[MaxN],m[MaxN];
char marked[MaxS];

int main()
{
    fin>>n;
    for(register int i=0;i<n;++i)
    {
        fin>>v[i];
    }
    fin.close();

    sort(v,v+n);

    marked[0]=1;
    for(register int i=0;i<n;++i)
    {
        if(marked[v[i]]==0)
        {
            m[++m[0]]=v[i];
            for(register int j=0;j<MaxS-1-v[i];++j)
            {
                if(marked[j]==1)
                {
                    marked[j+v[i]]=1;
                }
            }
        }
    }

    fout<<m[0]<<"\n";
    for(register int i=1;i<=m[0];++i)
    {
        fout<<m[i]<<" ";
    }
    fout.close();
    return 0;
}