Cod sursa(job #396775)

Utilizator MKLOLDragos Ristache MKLOL Data 15 februarie 2010 20:44:01
Problema Economie Scor 100
Compilator cpp Status done
Runda Pregatire OJI 2010 Marime 0.79 kb
#include<algorithm>
using namespace std;
struct cel
{
    int x,y;
} v[5000];
char l[50010];
int K;
int cmp(cel a,cel b)
{
    return a.x<b.x;
}
int N;
void knap(int k)
{
    for(int i=0;i<=v[N].x;++i)
    {
        if(l[i]==1)
        {
        if(i+k<=50000)
            l[i+k]=1;
        }
    }
}
int main()
{
freopen("economie.in","r",stdin);
freopen("economie.out","w",stdout);
    scanf("%d",&N);
    for(int i=1;i<=N;++i)
    {
    scanf("%d",&v[i].x);
    }
    sort(v+1,v+N+1,cmp);
    l[0]=1;
    for(int i=1;i<=N;++i)
    {
        if(l[v[i].x]==0)
        {
        v[i].y=1;
        ++K;
        knap(v[i].x);
        }
    }
    printf("%d\n",K);
    for(int i=1;i<=N;++i)
    {
    if(v[i].y==1)
        printf("%d ",v[i].x);
    }
return 0;

}