Cod sursa(job #2528444)

Utilizator betybety bety bety Data 21 ianuarie 2020 21:23:41
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int f[205];
int dp[75005];
int last[75005];
int main()
{
    int n,x,g;
    cin>>n>>g;
    for(int i=1;i<=n;++i)
    {
        cin>>x;
        f[x]++;
    }
    dp[0]=1;
    for(int i=200;i>=1;--i)
    for(int j=g;j>=0;--j)
    {
        if(!dp[j]) continue;
        for(int d=1;d*i+j<=g and d<=f[i];++d)
        {
            if(dp[d*i+j])
                break;
            dp[d*i+j]=dp[j]+d;
            last[d*i+j]=i;
        }
    }
    int best=g;
    while(dp[best]==0)
        --best;
    cout<<best<<" "<<dp[best]-1<<endl;
    int nr=dp[best]-1;
    for(int i=1;i<=nr;++i)
    {
        cout<<last[best]<<endl;
        best-=last[best];
    }
    return 0;
}