Cod sursa(job #291507)

Utilizator ConsstantinTabacu Raul Consstantin Data 29 martie 2009 22:32:10
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include<stdio.h>

int v[1001],viz[50001],max,sol[1001],i,j,k,l,m,n;

int main(){

freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);

scanf("%d",&n);

for(i=1;i<=n;i++)
        {scanf("%d",&v[i]);
        if(v[i]>max)max=v[i];
        if(v[i]==1)
                {printf("%d\n%d",1,1);
                return 0;
                }}

viz[0]=1;
for(i=1;i<=n;i++)
{if(2*v[i]<max)
viz[2*v[i]]=1;
for(j=v[i]+1;j<=max-v[i];j++)
        if(viz[j])
        viz[j+v[i]]=1;}
for(i=1;i<=n;i++)
        if(!viz[v[i]])sol[++k]=v[i];

printf("%d\n",k);
for(i=1;i<=k;i++)
        printf("%d\n",sol[i]);

        
return 0;}