Cod sursa(job #1704845)

Utilizator Debuger33Numarul1 Debuger33 Data 19 mai 2016 13:55:37
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 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" ;
	}
	fout.close() ;
	fin.close() ;
	return 0 ;
}