Cod sursa(job #110047)

Utilizator sarabogdanSara Nicolae Bogdan sarabogdan Data 25 noiembrie 2007 16:44:50
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<stdio.h>
#include<algorithm>

using namespace std;
char a[50001];
int b[1001];

long n , i , j;
int max1;
long nr , sol[1001];
int main()
{
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    
    scanf("%d",&n);
    for (i = 1 ; i <= n ; i++)
    {
        scanf("%d",&b[i]);
        if (b[i]>max1)
           max1 = b[i];
    }
    sort(b+1  , b + n);
    
    for (i = 1 ; i <= n ; i++)
    {
        if (a[b[i]] != 1)
        {
                    nr++;
                    sol[nr] = b[i];
        
	for (j = b[i]; j <= max1; j+=b[i])
		a[j] = 1;
        for (j = 1 ; j <= max1 ; ++j)
        {
           
            if (a[j]==1 && j + b[i] <= max1)
               a[j+b[i]] = 1;
        }
        }
    }
    printf("%ld\n",nr);
    for (i = 1 ; i <= nr ; i++)
        printf("%ld\n",sol[i]);
    return 0;
}