Pagini recente » Cod sursa (job #1670884) | Cod sursa (job #3218194) | Cod sursa (job #2454284) | Cod sursa (job #3136778) | Cod sursa (job #288000)
Cod sursa(job #288000)
#include<stdio.h>
#define NMAX 1000
int n,i,j,ok,k,v[NMAX],t[50*NMAX],max;
void quick(int st, int dr)
{
int i=st,j=dr;
int p;
p=v[(i+j)/2];
if(i>j) return;
while (i<=j)
{
while(v[i]<p) i++;
while(v[j]>p) j--;
if(i<=j){
v[0]=v[i];
v[i]=v[j];
v[j]=v[0];
i++;
j--;
}
}
if(st<j) quick(st,j);
if(i<dr) quick(i,dr);
}
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%d", &n);
for(i=1;i<=n;i++)
{
scanf("%d", &v[i]);
if(v[i]>max) max=v[i];
}
quick(1,n);
for(i=1;i<=n;i++)
{
ok=1;
if(t[v[i]]==0){
t[i]=2;
k++;
}
for(j=i;j<=max;j++)
if(t[j-v[i]]!=0){
t[j]=1;
}
}
printf("%d\n", k);
for(i=1;i<=max;i++)
if(t[i]==2) printf("%d ", i);
return 0;
}