Cod sursa(job #3263850)

Utilizator Radu_BicliBiclineru Radu Radu_Bicli Data 16 decembrie 2024 16:51:34
Problema Ghiozdan Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
const int GMAX = 75000;
const int NRGMAX = 200;
int d[GMAX + 2], fr[NRGMAX + 2];
int n, grTot, i, j, k, gma, ma;
int rasp[GMAX + 2];

int main() {
    fin >> n >> grTot;
    for(i = 1; i <= n; i++) {
        int gr

        fin >> gr;
        gma = max(gma, gr);
        fr[gr]++;
    }

    d[0] = 1;
    for(i = gma; i >= 1; i--) {
        if(fr[i] > 0) {
            for(j = grTot - i; j >= 0; j--) {
                if(d[j] > 0) {
                    for(k = 1; k <= fr[i] && j + k * i <= grTot && d[j + k * i] == 0; k++) {
                        d[j + k * i] = d[j + (k - 1) * i] + 1;
                        ma = max(ma, j + k * i);
                        rasp[j + k * i] = i;
                    }
                }
            }
        }
    }

    fout << ma << " " << d[ma] - 1 << "\n";
    for(i = ma; i ma> 0; i -= rasp[i]) fout<< rasp[i] << "\n";

    return 0;
}