Pagini recente » Cod sursa (job #1670545) | Diferente pentru problema/coduri intre reviziile 13 si 12 | Borderou de evaluare (job #1774984) | Cod sursa (job #3348003) | Cod sursa (job #3348321)
#include <fstream>
#include <algorithm>
#include <vector>
#include <set>
using namespace std;
ifstream cin("economie.in");
ofstream cout("economie.out");
const int nmax=1e3, vmax=5e4;
int n, v[nmax+5];
bool gr[vmax+5];
vector<int>sol;
set<int>s;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
int x; cin>>x;
s.insert(x);
}
sol.push_back(*s.lower_bound(1));
gr[sol[0]]=true;
for(int i=sol[0]+1;i<=vmax;i++)
{
int len=sol.size();
bool newsol=true, inset=(s.find(i)!=s.end());
for(int j=0;j<len;j++)
{
if(gr[i-sol[j]]==true)
{
newsol=false;
break;
}
}
if(inset==true && newsol==true)
{
sol.push_back(*s.lower_bound(i));
gr[i]=true;
}else if(newsol==false)
gr[i]=true;
}
int len=sol.size();
cout<<len<<'\n';
for(int i=0;i<len;i++)
cout<<sol[i]<<'\n';
return 0;
}