Cod sursa(job #1161211)

Utilizator chiriacandrei25Chiriac Andrei chiriacandrei25 Data 31 martie 2014 08:57:24
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Lista lui wefgef Marime 0.76 kb
#include <cstdio>
#define Gmax 75005

using namespace std;

int ap[205],dp[Gmax],nxt[Gmax];

int main()
{
    int N,G,x,i,j,k;
    freopen ("ghiozdan.in","r",stdin);
    freopen ("ghiozdan.out","w",stdout);
    scanf("%d%d", &N,&G);
    for(i=1;i<=N;++i)
    {
        scanf("%d", &x);
        ++ap[x];
    }
    dp[0]=1;
    for(i=200;i;--i)
        if(ap[i])
            for(j=G-i;j>=0;--j)
                if(dp[j])
                    for(k=1;k<=ap[i] && j+k*i<=G && !dp[j+k*i];++k)
                    {
                        dp[j+k*i]=dp[j]+k;
                        nxt[j+k*i]=i;
                    }
    for(i=G;!dp[i];--i);
    printf("%d %d\n", i,dp[i]-1);
    for(;nxt[i];i-=nxt[i])
        printf("%d\n", nxt[i]);
    return 0;
}