Cod sursa(job #1672397)

Utilizator bob123bobelus bob bob123 Data 2 aprilie 2016 18:09:11
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int k,nr,n,i,a[1001],d[1001],val[50001];
bool f[50001];
int main()
{
    freopen("economie.in", "r", stdin);
    freopen("economie.out", "w", stdout);
    scanf("%d", &n);
    for(i=1;i<=n;++i)
        scanf("%d", &a[i]);
    sort(a+1,a+n+1);
    d[++k]=a[1];
    for(i=a[1];i<=a[n];i+=a[1])
        val[++nr]=i,f[i]=1;
    for(i=2;i<=n;++i){
        if(f[a[i]]==0){
            d[++k]=a[i];
            int nr1=nr;
            for(int t=1;t*a[i]<=a[n];++t){
                for(int j=1;j<=nr1&&t*a[i]+val[j]<=a[n];++j)
                    val[++nr]=val[j]+a[i]*t,f[val[nr]]=1;
            }
        }
    }
    printf("%d\n", k);
    for(i=1;i<=k;++i)
        printf("%d\n",d[i]);
    return 0;
}