Cod sursa(job #2731335)

Utilizator TudosieRazvanTudosie Marius-Razvan TudosieRazvan Data 27 martie 2021 17:59:10
Problema Economie Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#include <algorithm>
#define NMAX 1000
using namespace std;

ifstream fin ("economie.in");
ofstream fout ("economie.out");

int n,v[NMAX+3],k,sol[NMAX+3];
bool dp[50003];

int main()
{
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        fin>>v[i];
    }
    sort(v+1,v+n+1);
    int elem=v[n];
    for(int i=1; i<=n; i++)
    {
        if(dp[v[i]]==false)
        {
            //nu pot forma moneda asta
            sol[++k]=v[i];
            dp[v[i]]=1;
            //marchez celelalte valori
            for(int j=1; j<=elem-v[i]; j++)
            {
                if(dp[j]!=0)
                {
                    dp[j+v[i]]=1;
                }
            }
        }
    }
    fout<<k<<"\n";
    for(int i=1; i<=k; i++)
    {
        fout<<sol[i]<<" ";
    }
    return 0;
}