Cod sursa(job #805908)

Utilizator romircea2010FMI Trifan Mircea Mihai romircea2010 Data 1 noiembrie 2012 14:29:22
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <algorithm>

using namespace std;

int n, a[1010], sol[1010], nsol;
bool pos[50010];

inline void Read()
{
    ifstream f("economie.in");
    f>>n;
    int i;
    for(i=1; i<=n; i++)
        f>>a[i];
    f.close();
}

inline void Solve()
{
    sort(a+1, a+n+1);
    int i, j, maxim;
    maxim = a[n];
    for(i=1; i<=n; i++)
    {
        if (!pos[a[i]])
        {
            sol[++nsol] = a[i];
            pos[a[i]] = true;
            for(j=1; j+a[i] <= maxim; j++)
                if(pos[j] == true)
                    pos[j+a[i]] = true;
        }
    }
}

inline void Write()
{
    ofstream g("economie.out");
    g<<nsol<<"\n";
    for(int i = 1; i<=nsol; i++)
        g<<sol[i]<<"\n";
    g.close();
}

int main()
{
    Read();
    Solve();
    Write();
    return 0;
}