Cod sursa(job #1479100)

Utilizator TibiraducanuTiberiu Raducanu Tibiraducanu Data 30 august 2015 15:48:52
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <algorithm>
using namespace std;

int v[1005],f[1005];
int aux[50005];

int main()
{
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);

    int n,i,maxx=0,minn=1000000,nr,cnt=0;

    scanf("%d",&n);

    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
        if(v[i]>=maxx) maxx=v[i];
        if(v[i]<=minn) minn=v[i];
    }

    //printf("%d",maxx);

    sort(&v[1],&v[n+1]);

    //for(i=1;i<=n;i++) printf("%d ",v[i]);

    for(i=1;i<=n;i++)
    {
        if(aux[v[i]]==0)
        {
            cnt++;
            f[cnt]=v[i];

            aux[v[i]]=1;

            nr=maxx-v[i];

            for(int j=1;j<=nr;j++)
            {
                if(aux[j]==1)
                {
                    aux[j+v[i]]=1;
                }
            }
        }
    }

    printf("%d\n",cnt);

    for(i=1;i<=cnt;i++)
    {
        printf("%d\n",f[i]);
    }



    return 0;
}