Cod sursa(job #1346512)

Utilizator matei_cChristescu Matei matei_c Data 18 februarie 2015 12:10:36
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<cmath>
using namespace std ;

#define maxn 1005
#define maxval 50005

int N, a[maxn] ;

bool viz[maxval] ;

vector<int> sol ;

int main()
{
	std::ios_base::sync_with_stdio(false) ;

	freopen("economie.in", "r", stdin);
	freopen("economie.out", "w", stdout);

    cin >> N ;

    for(int i = 1; i <= N; ++i)
        cin >> a[i] ;

    sort( a + 1, a + N + 1 ) ;

    viz[0] = true ;

    for(int i = 1; i <= N; ++i)
    {
        if( viz[ a[i] ] == false )
        {
            sol.push_back( a[i] ) ;

            for(int j = a[i]; j < maxval; j +=a[i] )
                if( viz[ j - a[i] ] == true )
                    viz[j] = true ;
        }
    }

    cout << sol.size() << "\n" ;

    for(size_t i = 0; i < sol.size(); ++i)
        cout << sol[i] << "\n" ;

	return 0 ;
}