Cod sursa(job #1752463)

Utilizator silkMarin Dragos silk Data 4 septembrie 2016 00:05:38
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <cstdio>
#include <algorithm>
#define VMax 50000
#define NMax 1000
using namespace std;

char is[VMax+1];
int v[NMax+1];
int a[NMax+1];

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

    int i,j,N,ans,lim;

    scanf("%d",&N);
    for(i = 1; i <= N; ++i) scanf("%d",&v[i]);

    sort(v+1,v+N+1); lim = v[N];
    is[0] = 1;
    for(ans = 0, i = 1; i <= N; ++i)
    if( !is[ v[i] ] )
    {
        a[ ++ans ] = v[i];
        for(j = 0; j <= lim - v[i]; ++j)
        if( is[j] ) is[ j + v[i] ] = 1;
    }

    printf("%d\n",ans);
    for(i = 1; i <= ans; ++i) printf("%d\n", a[i] );



return 0;
}