Cod sursa(job #1670221)

Utilizator sebastiannrxRichiteanu Mihai Sebastian sebastiannrx Data 31 martie 2016 16:17:20
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,gr,x,i,j,k,v[75001],t[75001],b[75001];
int main()
{   f>>n>>gr;
    for (i=1;i<=n;++i) {
        f>>x;
        ++v[x];}
    b[0]=1;
    for (i=200;i>=1;--i)
        if (v[i]!=0)
            for (k=gr-i;k>=0;--k)
                if (b[k]!=0)
                    for (j=1;j<=v[i] && k+i*j<=gr;++j)
                        if (b[k+i*j]==0) {
                            b[k+i*j]=b[k]+j;
                            t[k+i*j]=i;}
                        else
                            break;

    while (b[gr]==0)
        --gr;
    g<<gr<<" "<<b[gr]-1;
    while (b[gr]!=1) {
        g<<'\n'<<t[gr];
        gr-=t[gr];
    }

    return 0;
}