Pagini recente » Cod sursa (job #513810) | Cod sursa (job #1244315) | Cod sursa (job #2509970) | Cod sursa (job #2897137) | Cod sursa (job #1013184)
#include <cstdio>
#include <algorithm>
using namespace std;
const int Gmax = 75005;
int G, N, mg, last[ Gmax ], sol[ Gmax ],v[202], maxi;
inline void read()
{
scanf("%d%d",&N,&G);
int x;
for(int i = 1;i <= N;++i){
scanf("%d",&x);
++v[x];
maxi = max(x,maxi);
}
}
inline void solve()
{
int i, j, k, x;
sol[0] = 1;
for(i = maxi;i ; --i)
if(v[i]) for(j = G-i;j >= 0; --j)
if(sol[j])
for(k = 1,x = i;k<=v[i] && j+x<=G && !sol[j+x]; ++k,x+=i){
sol[j+x] = sol[j]+k;
last[j+x] = i;
if(j+x>mg)
mg = j+x;
}
}
inline void print()
{
printf("%d %d\n",mg,sol[mg]-1);
while(mg){
printf("%d\n",last[mg]);
mg -= last[mg];
}
}
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
read();
solve();
print();
return 0;
}