Pagini recente » Cod sursa (job #974786) | Cod sursa (job #2123178) | Istoria paginii runda/as4 | Cod sursa (job #1513732) | Cod sursa (job #157992)
Cod sursa(job #157992)
#include <fstream.h>
#define MAX 50100
ifstream fin ("economie.in");
ofstream fout ("economie.out");
int a[MAX],v[MAX],n,k;
void citire()
{
fin>>n;
for (int i=0;i<n;i++)
fin>>a[i];
fin.close();
}
void poz (int li,int ls,int &k,int a[MAX])
{
int i=li,j=ls,aux,i1=0,j1=-1;
while (i<j)
{
if (a[i]>a[j])
{
aux=a[i];
a[i]=a[i+1];
a[i+1]=aux;
aux=i1;
i1=-j1;
j1=-aux;
}
i+=i1;
j+=j1;
}
k=i;
}
void qsort (int li,int ls)
{
if (li<ls)
{
poz(li,ls,k,a);
qsort(li,k-1);
qsort(k+1,ls);
}
}
void afisare()
{
int sir[MAX],num=0;
v[0]=1;
for (int j=0;j<n;j++)
for (int i=0;i<=a[n-1];i++)
{
if (v[a[j]]==0)
sir[num++]=a[j];
if (v[i]==1)
v[i+a[j]]=1;
}
fout<<num<<"\n";
for (int jj=0;jj<num;jj++)
fout<<sir[jj]<<" ";
fout.close();
}
int main ()
{
citire();
qsort(-1,n-1);
afisare();
return 0;
}