Cod sursa(job #3154631)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 5 octombrie 2023 14:14:59
Problema Ghiozdan Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

using namespace std;
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
const int NMAX = 75001;
int fr[202], d[NMAX], last[NMAX];
int main()
{
    int n, g, a;
    in >> n >> g;
    for( int i = 0 ; i < n ; i++ ){
        in >> a;
        fr[a]++;
    }
    d[0] = 1;
    for( int i = 200; i > 0 ; i-- ){
        if( fr[i] )
            for( int j = g - i ; j >= 0 ; j-- )
                if( d[j] )
                    for( int z = 1 ; z <= fr[i] && i * z + j <= g ; z++ ){
                        if( !d[i*z+j] ){
                            d[i*z + j] = d[(z - 1)*i + j] + 1;
                            last[i*z + j] = i;
                        }
                    }
    }
    g++;
    while( !d[--g] );
    out << g << " " << d[g] - 1 << endl;
    while( g ){
        out << last[g] << endl;
        g -= last[g];
    }
    return 0;
}