Cod sursa(job #300264)

Utilizator stefynr8Space Monkey stefynr8 Data 7 aprilie 2009 12:30:00
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
 #include <stdio.h>  
   
 int n,v[1001],t[50001],i,j,min;  
   
 void quick(int st, int dr)  
{  
 int i=st,j=dr,p=v[(i+j)/2],aux;  
   
  if (i>j) return;  
  while (i<=j)  
     {  
      while (v[i]<p) i++;  
      while (v[j]>p) j--;  
      if (i<=j)  
         {  
          aux=v[i];  
          v[i]=v[j];  
          v[j]=aux;  
          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]);  
  quick(1,n);  
  min=0;  
  for (i=1;i<=n;i++)  
      {  
       if (t[v[i]]==0)  
         { t[v[i]]=2; ++min; }  
       for (j=v[i]+1;j<=v[n];j++)  
         if (t[j-v[i]]>0)  
             t[j]=1;  
      }  
  printf("%d\n", min);  
  for (i=1;i<=v[n];i++)  
     if (t[i]==2)  
         printf("%d\n", i);  
  return 0;  
 }