Cod sursa(job #2361187)

Utilizator MarutBrabete Marius Stelian Marut Data 2 martie 2019 13:41:34
Problema Ghiozdan Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include<cstdio>
#include<vector>
using namespace std;
struct help
{
    int nr;
    vector<int>v;
};
help d[75005];
int main()
{
    freopen("ghiozdan.in","r",stdin);
    freopen("ghiozdan.out","w",stdout);
    int n,G,g,p,i,last,j,max1=0;
    d[0].nr=0;
    scanf("%d%d",&n,&G);
    for(i=1;i<=G;i++)
        d[i].nr=100000;
    last=0;
    for(i=1;i<=n;i++)
    {
        scanf("%d",&g);
        for(j=last;j>=0;j--)
        {
            if(j+g<=G)
            {
                if(d[j].nr!=100000)
                {
                    if(d[j].nr+1<d[j+g].nr)
                    {
                        d[j+g].nr=d[j].nr+1;
                        d[j+g].v=d[j].v;
                        d[j+g].v.push_back(g);
                        if(j+g>last) last=j+g;
                    }
                }
            }
        }
    }
    for(i=G;i>=0;i--)
    {
        if(d[i].nr!=100000)
        {
            printf("%d %d\n",i,d[i].nr);
            for(j=0;j<d[i].v.size();j++)
                printf("%d\n",d[i].v[j]);
            break;
        }
    }
    return 0;
}