Mai intai trebuie sa te autentifici.
Cod sursa(job #401097)
Utilizator | Data | 22 februarie 2010 13:44:42 | |
---|---|---|---|
Problema | Economie | Scor | 100 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 1 kb |
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
#define VM 50005
#define NM 1005
int L[VM],V[NM];
char u[VM];
int main()
{
int N;
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;++i)
scanf("%d",&V[i]);
sort(V+1,V+N+1);
int dim=1;
L[dim]=0;
u[0]=1;
int ans=0;
int fans[1005];
for(int i=1;i<=N;++i)
if(!u[V[i]])
{
fans[++ans]=V[i];
int ldim=dim;
for(int j=1;j<=ldim;++j)
for(int k=1;L[j]+V[i]*k<=V[N];++k)
if(!u[L[j]+V[i]*k])
{
u[L[j]+V[i]*k]=1;
L[++dim]=L[j]+V[i]*k;
}
}
printf("%d\n",ans);
for(int i=1;i<=ans;++i)
printf("%d\n",fans[i]);
return 0;
}