Pagini recente » Cod sursa (job #2385830) | Cod sursa (job #2515610) | Cod sursa (job #2385794) | Cod sursa (job #2933600) | Cod sursa (job #2515750)
#include <fstream>
using namespace std;
ifstream in("economie.in");
ofstream out("economie.out");
const int lim=1e3+3;
const int lim2=5e4+3;
int v[lim];
int f[lim2];
int invers[lim2];
int main()
{
int n,maxx=-1;
in>>n;
for(int i=1;i<=n;++i)
{
in>>v[i];
invers[v[i]]=i;
if(v[i]>maxx)
maxx=v[i];
}
f[0]=1;
int cnt=0;
for(int i=1;i<=n;++i)
if(v[i]!=-1)
{
++cnt;
for(int j=0;j<=maxx;++j)
if(f[j]==1)
{
if(invers[j]>0 and invers[j]>=i+1)
v[invers[j]]=-1;
if(j+v[i]<=maxx)
f[j+v[i]]=1;
}
}
out<<cnt<<endl;
for(int i=1;i<=n;++i)
if(v[i]!=-1)
out<<v[i]<<endl;
return 0;
}