Cod sursa(job #128658)

Utilizator cos_min_max_ionCosmin Ion cos_min_max_ion Data 27 ianuarie 2008 16:50:19
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include<iostream.h>
#include<stdio.h>
short v[50001];
int main()
{ int n, m[1000], i, l, j, vm[1000],k,primul,sch,aux;
  freopen("economie.in", "rt", stdin);
  freopen("economie.out", "wt", stdout);
  cin>>n;
  for(i=0;i<n;i++)
  cin>>m[i];
  l=n-1;
  do{sch=0;
     for(i=0;i<l;i++)
       if(m[i]>m[i+1]) {aux=m[i];
			m[i]=m[i+1];
			m[i+1]=aux;
			sch=1;
		       }
     l--;
    }while(sch);
  if( m[0]==1) cout<<1<<endl<<1;
  else{
  for(i=m[0];i<=m[n-1];i+=m[0])
     v[i]=1;
  vm[0]=m[0];
  for(i=j=1;i<n;i++)
   if(v[m[i]]==0) { v[m[i]]=1;
		    vm[j++]=m[i];
		    primul=1;
		    while(v[primul]==0) primul++;
		    for(k=primul;k<=m[n-1]-m[i];k++)
		       if(v[k]) v[k+m[i]]=1;
		  }
  cout<<j<<endl;
  for(i=0;i<j;i++)
  cout<<vm[i]<<endl;
  }
  return 0;
}