Pagini recente » Cod sursa (job #2052544) | Cod sursa (job #852893) | Istoria paginii runda/fara_nume | Cod sursa (job #2893459) | Cod sursa (job #1218564)
# include <fstream>
# include <iostream>
using namespace std;
# define pmax 205
# define gmax 75005
ifstream fi("ghiozdan.in");
ofstream fo("ghiozdan.out");
int p[pmax],g[gmax],x[gmax],y[gmax];
int main(void)
{
int n,G;
fi>>n>>G;
g[0]=1;
int X;
for (int i=1;i<=n;++i) fi>>X,++p[X];
for (int i=200;i>=0;--i)
if (p[i])
for (int j=G-i;j>=0;--j)
if (g[j])
for (int pi=1;pi<=p[i] && (j+pi*i)<=G && !g[j+pi*i];++pi)
g[j+pi*i]=1,
y[j+pi*i]=pi,
x[j+pi*i]=i;
int p=G;
while (!g[p]) --p;
int S=y[p],f=p-x[p]*y[p];
while (f) S+=y[f],f-=x[f]*y[f];
fo<<p<<" "<<S<<"\n";
for (f=p;f;f-=x[f]*y[f])
for (int i=1;i<=y[f];++i)
fo<<x[f]<<"\n";
fo.close();
}