Cod sursa(job #109630)

Utilizator IoannaPandele Ioana Ioanna Data 25 noiembrie 2007 12:11:57
Problema Economie Scor 0
Compilator cpp Status done
Runda preONI 2008, Runda 1, Clasa a 9-a Marime 0.65 kb
#include<stdio.h>
long max,v[50005],n,nr,s[50005];

void read()
{
int i;
scanf("%ld",&n);
for (i=1;i<=n;i++)
    {scanf("%ld",&v[i]);
    if (v[i]>max)
	max=v[i];
	}
}

void rez()
{
int i,j;
for (i=1;i<=n;i++)
    {if (!s[v[i]])
       s[v[i]]=1;
    for (j=1;j<=max;j++)
       if (s[j])
	  if (s[j+v[i]]<s[j]+1)
	     s[j+v[i]]=s[j]+1;
    }

for (i=1;i<=n;i++)
    {
     if (s[v[i]]==1)
	nr++;
	}
printf("%ld\n",nr);
for (i=1;i<=n;i++)
    {
     if (s[v[i]]==1)
	printf("%ld\n",v[i]);
     }
}

int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
read();
rez();
fcloseall();
return 0;
}