Pagini recente » Cod sursa (job #2666326) | Cod sursa (job #2827902) | Cod sursa (job #1146118) | Cod sursa (job #2645421) | Cod sursa (job #287971)
Cod sursa(job #287971)
#include <stdio.h>
long n,v[1001],t[50001],vmax,i,j,min,ok;
void quick(long st, long dr)
{
long i=st,j=dr,p=(i+j)/2;
while (i<=j)
{
while (v[i]<v[p]) i++;
while (v[j]>v[p]) j--;
if (i<=j)
{
v[0]=v[i];
v[i]=v[j];
v[j]=v[0];
i++;
j--;
}
}
if (st<j) quick(st,j);
if (i<dr) quick(i,dr);
}
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%ld", &n);
for (i=1;i<=n;i++)
{
scanf("%ld", &v[i]);
if (v[i]>vmax) vmax=v[i];
}
quick(1,n);
for (i=1;i<=n && !ok;i++)
{
ok=1;
if (!t[v[i]])
t[v[i]]=2, min++;
for (j=v[i]+1;j<=vmax;j++)
if (t[j-v[i]])
t[j]=1, ok=0;
}
printf("%ld\n", min);
for (i=1;i<=vmax && min;i++)
if (t[i]==2)
printf("%ld\n", i), min--;
return 0;
}