Pagini recente » Cod sursa (job #2424736) | Cod sursa (job #2069208) | Cod sursa (job #1171352) | Cod sursa (job #2550812) | Cod sursa (job #2361301)
#include <cstdio>
#include <algorithm>
using namespace std;
const int INF = 2.e9;
int f[205] , g[75005] , nr[75005];
int main()
{
freopen("ghiozdan.in" , "r" , stdin);
freopen("ghiozdan.out" , "w" , stdout);
int n , G , i , j , k , x;
scanf("%d%d" , &n , &G);
for(i = 1 ; i <= n ; i ++)
{
scanf("%d" , &x);
f[x] ++;
}
for(i = 1 ; i <= G ; i ++)
g[i] = INF;
g[0] = 0;
for(i = 200 ; i >= 1 ; i --)
if(f[i])
for(j = G - i ; j >= 0 ; j --)
if(g[j] != INF)
for(k = 1 ; k <= f[i] && j + k * i <= G && g[j + k * i] == INF ; k ++)
{
g[j + k * i] = g[j] + k;
nr[j + k * i] = i;
}
for(i = G ; i >= 1 ; i --)
if(g[i] != INF)
{
printf("%d %d\n" , i , g[i]);
for(j = i ; j > 0 ; j = j - nr[j])
printf("%d\n" , nr[j]);
break;
}
return 0;
}