Pagini recente » Cod sursa (job #559483) | Cod sursa (job #2432345) | Cod sursa (job #3170778) | Cod sursa (job #1327171) | Cod sursa (job #235806)
Cod sursa(job #235806)
#include<iostream>
#include<stdio.h>
FILE *f=fopen("economie.in","r"),*g=fopen("economie.out","w");
unsigned short v[50005];long a[1005],max,aux[1005],nr,j,i,n;
int divide(int st,int dr)
{
long aux=a[st];
while(st<dr)
{
while(st<dr&&a[dr]>=aux)
dr--;
a[st]=a[dr];
while(st<dr&&a[st]<=aux)
st++;
a[dr]=a[st];
}
a[st]=aux;
return st;
}
void qsort(int st,int dr)
{
int m=divide(st,dr);
if(m-1>st) divide(st,m-1);
if(m+1<dr) divide(m+1,dr);
}
int main()
{
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
{
fscanf(f,"%ld",&a[i]); max=max>a[i]?max:a[i];
}
qsort(1,n);
for(i=1;i<=n;i++)
if(v[a[i]]==0)
{
nr++;
aux[nr]=a[i];
v[a[i]]=1;
for(j=a[i]+1;j<=max;j++)
if(v[j-a[i]])
v[j]=1;
}
fprintf(g,"%ld\n",nr);
for(i=1;i<=nr;i++)
fprintf(g,"%ld\n",aux[i]);
return 0;
}