Pagini recente » Cod sursa (job #164951) | Cod sursa (job #1925755) | Cod sursa (job #1190848) | Cod sursa (job #1440614) | Cod sursa (job #587773)
Cod sursa(job #587773)
#include <iostream>
#include <fstream>
using namespace std;
unsigned N, V[1005], VMax, Sort[50010], M;
char S[50010];
void Read ()
{
ifstream fin ("economie.in");
unsigned i;
fin >> N;
for (i=0; i<N; i++)
{
fin >> V[i];
if (V[i]>VMax)
{
VMax=V[i];
}
}
fin.close ();
}
void Type ()
{
ofstream fout ("economie.out");
unsigned i;
fout << M << "\n";
for (i=0; i<M; i++)
{
fout << V[i] << "\n";
}
fout.close ();
}
void CountingSort ()
{
unsigned i, j=0;
for (i=0; i<N; i++)
{
Sort[V[i]]=1;
}
for (i=1; i<=VMax; i++)
{
if (Sort[i]==1)
{
V[j++]=i;
}
}
}
int main ()
{
unsigned i, j, v;
Read ();
CountingSort ();
for (i=0; i<N; i++)
{
S[V[i]]=1;
for (j=1; j<=VMax; j+=V[i])
{
if ((S[j]==1)&&(j+V[i]<=VMax))
{
S[j+V[i]]=1;
}
}
v=1;
for (j=0; j<N; j++)
{
if (S[V[j]]==0)
{
v=0;
break;
}
}
if (v==1)
{
break;
}
}
M=i+1;
Type ();
return 0;
}