Pagini recente » Cod sursa (job #660059) | Cod sursa (job #2892750) | Cod sursa (job #2438523) | Cod sursa (job #978116) | Cod sursa (job #3162504)
#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
ifstream cin("economie.in");
ofstream cout("economie.out");
int dp[50001],v[1001],sol[1001],n,i,j,k;
int main()
{
cin>>n;
for(i=1;i<=n;i++)
cin>>v[i];
sort(v+1,v+n+1);
memset(dp,-1,sizeof(dp));
dp[0]=0;
for(i=1;i<=n;i++)
{
if(dp[v[i]]==-1)/// submultimea nu a fost formata
{
sol[++k]=v[i];
for(j=0;j<=v[n]-v[i];j++)///det alte monezi la care putem adauga moneda actuala
if(dp[j]!=-1) /// s-a obtinut anterior submultimea de suma j
dp[j+v[i]]=1; /// obtin submultimea de suma j+v[i]
}
}
cout<<k<<'\n';
for(i=1;i<=k;i++)
cout<<sol[i]<<'\n';
return 0;
}