Cod sursa(job #925761)

Utilizator narcis_vsGemene Narcis - Gabriel narcis_vs Data 24 martie 2013 18:35:43
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<fstream>
#include<algorithm>
#include<vector>
#define VAL_MAX 50004
using namespace std;
int a[1004],n;
bool ap[VAL_MAX];
vector<int>sol;
void Citire()
{
    ifstream fin("economie.in");
    fin>>n;
    for(int i=1;i<=n;i++)
        fin>>a[i];
    fin.close();
    sort(a+1,a+n+1);
}

void Rezolvare()
{
    int i,j,maxval = a[n];
    for(i=1;i<=n;i++)
        if(ap[a[i]]==0)//daca nu puteam forma suma a[i] cu elementele precedente
        {
            sol.push_back(a[i]);
            ap[a[i]] = 1;
            for(j=1;j<=maxval-a[i];j++)
                if(ap[j])
                    ap[j+a[i]] = 1;
        }
}

void Afisare()
{
    int i,lim;
    ofstream fout("economie.out");
    lim = sol.size();
    fout<<lim<<"\n";
    for(i=0;i<lim;i++)
        fout<<sol[i]<<"\n";
    fout.close();
}

int main()
{
    Citire();
    Rezolvare();
    Afisare();
    return 0;
}