Cod sursa(job #799085)

Utilizator BarracudaFMI-Alex Dobrin Barracuda Data 17 octombrie 2012 21:45:52
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<algorithm>

using namespace std;
char ok[50001];
int b[1001];
long n,i,j;
int Maxim;
long ans,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]>Maxim)
           Maxim=b[i];
    }
	
    sort(b+1  , b + n);
    
    for (i=1;i<=n;i++){
        if (ok[b[i]]==0){
                    ++ans;
                    sol[ans]=b[i];
			for (j=b[i];j<=Maxim;j+=b[i])
				ok[j]=1;
					for (j=1;j<=Maxim;++j){
						if ( ok[j+b[i]]==0 && j+b[i]<=Maxim)
							ok[j+b[i]]=1;
					}	
        }
    }
	
    printf("%ld\n",ans);
	
    for (i=1;i<=ans;i++)
        printf("%ld\n",sol[i]);
    return 0;
}