Cod sursa(job #157992)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 13 martie 2008 13:29:26
Problema Economie Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream.h>
#define MAX 50100
ifstream fin ("economie.in");
ofstream fout ("economie.out");

int a[MAX],v[MAX],n,k;

void citire()
{
  fin>>n;
    for (int i=0;i<n;i++)
       fin>>a[i];
    fin.close();
}

void poz (int li,int ls,int &k,int a[MAX])
{
  int i=li,j=ls,aux,i1=0,j1=-1;
  while (i<j)
  {
    if (a[i]>a[j])
    {
      aux=a[i];
      a[i]=a[i+1];
      a[i+1]=aux;
      aux=i1;
      i1=-j1;
      j1=-aux;
    }
    i+=i1;
    j+=j1;
  }
  k=i;

}

void qsort (int li,int ls)
{
  if (li<ls)
  {
    poz(li,ls,k,a);
    qsort(li,k-1);
    qsort(k+1,ls);
  }
}

void afisare()
{
  int sir[MAX],num=0;
  v[0]=1;
  for (int j=0;j<n;j++)
  for (int i=0;i<=a[n-1];i++)
  {
    if (v[a[j]]==0)
       sir[num++]=a[j];
    if (v[i]==1)
      v[i+a[j]]=1;
  }
    fout<<num<<"\n";
  for (int jj=0;jj<num;jj++)
    fout<<sir[jj]<<" ";
    fout.close();
}

int main ()
{
  citire();
  qsort(-1,n-1);
  afisare();
   return 0;
}