Cod sursa(job #3331149)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 24 decembrie 2025 22:17:56
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>

using namespace std;

#define USE_STD_IO 0
#if USE_STD_IO
    #define fin cin
    #define fout cout
#else
    ifstream fin("ghiozdan.in");
    ofstream fout("ghiozdan.out");
#endif // USE_STD_IO

int d[75002], ult[75002];
int grMa, n, i, j;
int frg[75002];

int main() {
    if(USE_STD_IO) ios_base::sync_with_stdio(false);
    fin.tie(nullptr);
    fout.tie(nullptr);

    fin >> n >> grMa;
    for(i = 1; i <= n; i++) {
        int g;
        fin >> g;
        frg[g]++;
    }
    d[0] = 1;
    for(i = 200; i >= 1; i--) {
        if(frg[i] == 0) continue;
        for(j = grMa - i; j >= 0; j--) {
            if(d[j] == 0) continue;

            for(int k = 1; k <= frg[i] && j + k * i <= grMa && d[j + k * i] == 0; k++) {
                d[j + k * i] = d[j + (k - 1) * i] + 1;
                ult[j + k * i] = i;
            }
        }
    }

    i = grMa;
    while(!d[i]) i--;

    fout << i << " " << d[i] - 1 << "\n";
    while(i) {
        fout << ult[i] << "\n";
        i -= ult[i];
    }

    return 0;
}