Cod sursa(job #2009941)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 11 august 2017 12:36:57
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std ;

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

int n , a[1009] , sol[1009] , sum[50009] , nr ;

int main(){
    sum[0] = 1 ;
    fin >> n ;
    int max = 0 ;
    for(int i = 1 ; i <= n ; i ++){
        fin >> a[i] ;
        if(a[i] > max){
            max = a[i] ;
        }
    }
    sort(a + 1 , a + n + 1) ;
    sol[++ nr] = a[1] ;
    for(int i = a[1] ; i <= max ; i += a[1]){
        sum[i] = 1 ;
    }
    for(int i = 2 ; i <= n ; i ++){
        if(sum[a[i]] == 0){
            sol[++ nr] = a[i] ;
            for(int j = 0 ; j + a[i] <= max ; j ++){
                if(sum[j] == 1){
                    sum[j + a[i]] = 1 ;
                }
            }
        }
    }
    fout << nr << "\n" ;
    for(int i = 1 ; i <= nr ; i ++){
        fout << sol[i] << "\n" ;
    }
    fin.close() ;
    fout.close() ;
    return 0 ;
}