Pagini recente » Cod sursa (job #2808214) | Cod sursa (job #1900752) | Monitorul de evaluare | Cod sursa (job #1159940) | Cod sursa (job #587777)
Cod sursa(job #587777)
#include <iostream>
#include <fstream>
using namespace std;
unsigned N, V[1005], VMax, Sort[50010], M, Solutie[1005];
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 << Solutie[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++)
{
Solutie[M++]=V[i];
S[V[i]]=1;
for (j=1; j<=VMax; j++)
{
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;
}
}
Type ();
return 0;
}