Mai intai trebuie sa te autentifici.

Cod sursa(job #1157072)

Utilizator andreiiiiPopa Andrei andreiiii Data 28 martie 2014 11:16:08
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <algorithm>
#include <cstdio>

using namespace std;

const int N=75005;

int v[205], dp[N], nxt[N];

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