Pagini recente » Cod sursa (job #813046) | Cod sursa (job #457766) | Cod sursa (job #2141431) | Cod sursa (job #842225) | Cod sursa (job #834576)
Cod sursa(job #834576)
#include <cstdio>
#include <algorithm>
using namespace std;
#define NMAX 1015
#define NMAX2 50015
int A[NMAX],Sol[NMAX],N,M;
bool V[NMAX2];
void Read()
{
freopen("economie.in","r",stdin);
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&A[i]);
}
void TSFH()
{
sort(A+1,A+N+1);
if(A[1]==1)
{
Sol[++M]=1;
return;
}
V[0]=1;
for(int i=1;i<=N;i++)
{
if(!V[A[i]]) //daca numarul de pe pozitia [i] nu a fost obtinut pana in prezent
{
Sol[++M]=A[i]; // adaugam numarul la vectorul de solutii
for(int j=0;A[i]+j<=A[N];j++) // incercam sa obtinem alte numere cu numerele citite pana acum
if(V[j])
V[j+A[i]]=1; // am obtinut un nou numar
}
}
}
void Print()
{
freopen("economie.out","w",stdout);
printf("%d\n",M);
for(int i=1;i<=M;i++)
printf("%d\n",Sol[i]);
}
int main()
{
Read();
TSFH();
Print();
return 0;
}