Pagini recente » Borderou de evaluare (job #1288340) | Borderou de evaluare (job #2003874) | Cod sursa (job #1967326) | Borderou de evaluare (job #2040203) | Cod sursa (job #2501117)
#include <iostream>
#include <algorithm>
using namespace std;
int v[1005];
bool ruc[50005];
int sol[1005],cnt;
int main()
{
int n,maxim=-1;
cin>>n;
for(int i=1;i<=n;i++){
cin>>v[i];
maxim=max(maxim,v[i]);
}
sort(v+1,v+n+1);
ruc[0]=1;
for(int i=1;i<=n;i++){
if(ruc[v[i]]==0){
for(int j=0;j<=maxim;j++){
if(ruc[j]==1 and j+v[i]<=maxim){
ruc[j+v[i]]=1;
}
if(j+v[i]>maxim)
break;
}
sol[++cnt]=v[i];
}
}
cout<<cnt<<"\n";
for(int i=1;i<=cnt;i++)
cout<<sol[i]<<"\n";
return 0;
}