Cod sursa(job #1727387)

Utilizator alittlezzCazaciuc Valentin alittlezz Data 10 iulie 2016 17:51:09
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <iostream>
#include <math.h>
#include <algorithm>

using namespace std;
#define ll long long
#define llu long long unsigned
#define pb push_back
#define mp make_pair

string problemName = "home";
string inFile = problemName+".in";
string outFile = problemName+".out";
ifstream fin(inFile.c_str());
ofstream fout(outFile.c_str());

int v[1005];
bool have[50005];
vector <int> ans;

int main(){
    int n,i,j;
    fin>>n;
    for(i = 1;i <= n;i++){
        fin>>v[i];
    }
    sort(v+1, v+n+1);
    for(i = 0;i <= v[n];i += v[1]){
        have[i] = 1;
    }
    ans.pb(v[1]);
    for(i = 2;i <= n;i++){
        if(have[v[i]] == 0){
            ans.pb(v[i]);
            for(j = 0;j <= v[n]-v[i];j++){
                if(have[j]){
                    have[j+v[i]] = 1;
                }
            }
        }
    }
    fout<<ans.size()<<'\n';
    for(auto it : ans){
        fout<<it<<'\n';
    }
    return 0;
}