Pagini recente » Cod sursa (job #2618659) | Cod sursa (job #1192751) | Cod sursa (job #2039272) | Cod sursa (job #2951979) | Cod sursa (job #567140)
Cod sursa(job #567140)
Utilizator |
roots1 roots |
Data |
29 martie 2011 19:23:25 |
Problema |
Economie |
Scor |
80 |
Compilator |
cpp |
Status |
done |
Runda |
101 |
Marime |
0.76 kb |
#include <stdio.h>
#include <string.h>
#include <algorithm>
#define Dim 1001
using namespace std;
int v[Dim];
char ok[50*Dim],sel[Dim];
int main()
{
int i,j,k,mx,sol,N;
freopen("economie.in","r",stdin);
scanf("%d",&N);
for(i=1;i<=N;i++) scanf("%d",&v[i]);
sort(v+1,v+N+1);
sol=0;
mx=0;
memset(ok,0,sizeof(ok));
memset(sel,0,sizeof(sel));
ok[0]=1;
for(i=1;i<=N;i++)
if(ok[v[i]]==0)
{
sel[i]=1;
for(j=mx;j>=0;j--)
if(ok[j])
{
k=j+v[i];
while(k<=50000)
{
ok[k]=1;
k+=v[i];
}
k-=v[i];
if(k>mx) mx=k;
}
sol++;
}
freopen("economie.out","w",stdout);
printf("%d\n",sol);
for(i=1;i<=N;i++)
if(sel[i]) printf("%d\n",v[i]);
return 0;
}