Pagini recente » Cod sursa (job #1267265) | Cod sursa (job #247399) | Cod sursa (job #2952365) | Cod sursa (job #395612) | Cod sursa (job #3154633)
#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;
}