Pagini recente » Cod sursa (job #3132120) | Cod sursa (job #1305112) | Cod sursa (job #3203378) | Cod sursa (job #2906552) | Cod sursa (job #155460)
Cod sursa(job #155460)
# include <stdio.h>
const long int MAXN=1000;
const long int MAXM=50000;
long int ciur[MAXM+1];
long int n,v[MAXN+1],nsol;
void citire()
{
FILE *f=fopen("economie.in","r");
fscanf(f,"%ld",&n);
long int i,j;
for (i=1;i<=n;i++)
fscanf(f,"%ld",&v[i]);
fcloseall();
}
void quick(long int li, long int lf)
{
long int i=li,j=lf,ii=0,jj=-1,aux;
while (i<j)
{
if (v[i]>v[j])
{
aux=v[i];v[i]=v[j];v[j]=aux;
aux=ii;ii=-jj;jj=-aux;
}
i+=ii;j+=jj;
}
if (i-li>1) quick(li,i-1);
if (lf-i>1) quick(i+1,lf);
}
void ciurr()
{
long int i,j;
for (i=1;i<=v[n];i++) ciur[i]=1;
for (i=1;i<=n;i++)
if (ciur[v[i]])
{
for (j=v[i];j<=v[n];j++)
if (ciur[j-v[i]]==0) ciur[j]=0;
nsol++;
}
else v[i]=0;
}
void scrie()
{
FILE *g=fopen("economie.out","w");
fprintf(g,"%ld\n",nsol);
long int i;
for (i=1;i<=n;i++)
if (v[i]) fprintf(g,"%ld\n",v[i]);
fcloseall();
}
int main()
{
citire();
quick(1,n);
ciurr();
scrie();
return 0;
}