Cod sursa(job #2404467)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 12 aprilie 2019 20:22:10
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>
using namespace std ;
const int NR = 75005 ;
ifstream in ("ghiozdan.in") ;
ofstream out ("ghiozdan.out") ;
int n , g , fr [ 205 ] , sol [ NR ] , v [ NR ] ;
int main () {
    int i , j , k , x ;
    in >> n >> g ;
    while ( n -- )  {
        in >> x ;
        fr [ x ] ++ ;
    }
    v [ 0 ] = 0 ;
    for ( i = 200 ; i ; i -- )  {
        if ( !fr [ i ] ) continue ;
        for ( j = g ; j >= 0 ; j -- )    {
            if ( !v [ j ] && j )    continue ;
            for ( k = 1 ; k * i + j <= g && k <= fr [ i ] && !v [ j + k * i ] ; k ++ )  {
                v [ j + k * i ] = k + v [ j ] ;
                sol [ j + k*i ] = i ;
            }
        }
    }
    for ( i = g ; !v [ i ] ; i -- ) ;
    out << i << ' ' << v [ i ] << '\n' ;
    while ( sol [ i ] ) {
        out << sol [ i ] << '\n' ;
        i -= sol [ i ] ;
    }
}