Cod sursa(job #113583)
| Utilizator | Data | 10 decembrie 2007 20:47:45 | |
|---|---|---|---|
| Problema | Economie | Scor | 100 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.66 kb |
#include <stdio.h>
int N, v[50005], res[50005], bst;
int main(void)
{
int i, j;
freopen("economie.in", "r", stdin);
freopen("economie.out", "w", stdout);
scanf("%d", &N);
for (i = 1; i <= N; i++)
{
scanf("%d", &j);
v[j] = 1;
}
res[0] = 1;
for (i = 1; i <= 50000; i++)
{
if (v[i] && !res[i])
{
for (j = i; j <= 50000; j++)
res[j] |= res[j-i];
bst++; v[i]++;
}
}
printf("%d\n", bst);
for (i = 1; i <= 50000; i++)
if (v[i] > 1)
printf("%d\n", i);
return 0;
}
