Pagini recente » Cod sursa (job #987706) | Cod sursa (job #302655) | Cod sursa (job #1726964) | Cod sursa (job #136525) | Cod sursa (job #184008)
Cod sursa(job #184008)
#include <stdio.h>
#define Nmax 1001
int v[Nmax], i, j, N, rez[Nmax], k;
short uz[50001];
inline void swap(int &x, int &y) { int temp = x; x = y; y = temp; }
void sort(int p, int q)
{
int st = p, dr = q, m = v[(st+dr) >> 1];
while (st < dr)
{
while (v[st] < m) st++;
while (v[dr] > m) dr--;
if (st<=dr) swap(v[st++],v[dr--]);
}
if (st < q) sort(st,q);
if (dr > p) sort(p,dr);
}
int main()
{
freopen("economie.in", "r", stdin);
for (scanf("%d\n", &N), i = 1; i<=N; i++ ) scanf("%d\n", v+i);
sort(1,N);
for (i = 1; i<=N; i++)
if (!uz[v[i]])
{
rez[++rez[0]] = v[i];
uz[v[i]] = 1;
for (j = 1; j<=v[N] - v[i]; j++)
if (uz[j])
uz[j+v[i]] = 1;
}
for (freopen("economie.out", "w", stdout), printf("%d\n", rez[0]), i = 1; i<=rez[0]; i++)
printf("%d\n", rez[i]);
return 0;
}