Cod sursa(job #1694955)

Utilizator sucureiSucureiRobert sucurei Data 26 aprilie 2016 12:39:55
Problema Ghiozdan Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream gr("ghiozdan.out");
int k,n,x,i,g,j,b[75001],t[75001];
int v[201];
int main()
{
    f >> n >> g;
    for(i = 1; i <= n; ++i)
    {
        f >> x;
        ++v[x];
    }
    b[0] = 1;
    for(i = 200; i >= 0; --i)
        if(v[i] != 0)
            for(k = g - i; k >= 0; --k)
                if(b[k] != 0)
                    for(j = 1; j <= v[i] && k + i * j <= g; ++j)
                        if(b[k + i * j] == 0)
                        {
                            b[k + i * j] = b[k] + j;
                            t[k + i * j] = i;
                        }
                        else
                            break;
    while(b[g] == 0)
        --g;
    gr << g << " " << b[g] - 1 << '\n';
    while(b[g] != 1)
    {
        gr << t[g] << '\n';
        g -= t[g];
    }
    return 0;
}