Cod sursa(job #499557)

Utilizator ivan_marianIvan Liviu Marian ivan_marian Data 10 noiembrie 2010 10:51:09
Problema Economie Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=1<<10;
const int MAX=1<<16;
int n,q,t[N],v[N],f[MAX];
void read()
{
    freopen("economie.in","r",stdin);
    freopen("economie.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&t[i]);
}
void init()
{
    f[0]=true;
    sort(t+1,t+n+1);
}
void marc(int x)
{
    for(int i=0;i<MAX;i++)
        if(f[i] && i+x<MAX)
            f[i+x]=true;
}
void solve()
{
    for(int i=1;i<=n;i++)
        if(!f[t[i]])
        {
            marc(t[i]);
            v[++q]=t[i];
        }
}
void afis()
{
    printf("%d\n",q);
    for(int i=1;i<=q;i++)
        printf("%d\n",v[i]);
}
int main()
{
    read();
    init();
    solve();
    afis();
    return 0;
}