Pagini recente » Cod sursa (job #986775) | Cod sursa (job #2649566) | Cod sursa (job #1966468) | Cod sursa (job #1886691) | Cod sursa (job #207039)
Cod sursa(job #207039)
#include <fstream.h>
int x[1001],a[1001],a1[5000],nr1,n,nr,i,j,aux,b,i1,j1,c,k,sw;
long s;
void poz(int li, int ls)
{i1=0;
j1=-1;
i=li;
j=ls;
while(i<j)
{if(x[i]<x[j])
{c=x[j];
x[j]=x[i];
x[i]=c;
c=i1;
i1=-j1;
j1=-c;
}
i+=i1;
j+=j1;
}
k=i;
}
void quick(int li, int ls)
{if(li<ls)
{poz(li,ls);
quick(li,k-1);
quick(k+1,ls);
}
}
void minim()
{nr++;
a[nr]=x[n];
x[n]=0;
n--;
}
void suma()
{s=a[nr];
nr1++;
a1[nr1]=s;
s+=a[1];
nr1++;
a1[nr1]=s;
for(j=2;j<=nr-1;j++)
{s+=a[j];
nr1++;
a1[nr1]=s;
nr1++;
a1[nr1]=a[nr]+a[j];
}
}
int main()
{
ifstream fin("economie.in");
fin>>n;
for(i=1;i<=n;i++)
fin>>x[i];
fin.close();
quick(1,n);
minim();
ofstream fout("economie.out");
if(a[nr]==1)
fout<<"1 1";
else
{
suma();
i=1;
while(i<=n)
{sw=1;
for(j=1;j<=nr;j++)
if(x[i]%a[j]==0)
{sw=0; break;}
if(sw!=0)
for(j=1;j<=nr1;j++)
if(x[i]%a1[j]==0)
{sw=0; break;}
if(sw==1)
{minim(); suma();}
else
i++;
}
fout<<nr<<'\n';
for(i=1;i<=nr;i++)
fout<<a[i]<<" ";
}
return 0;
}