Pagini recente » Cod sursa (job #1703766) | Cod sursa (job #916918) | Cod sursa (job #433134) | Cod sursa (job #2793925) | Cod sursa (job #495430)
Cod sursa(job #495430)
#include <algorithm>
using namespace std;
#define MAX 75005
#define DIM 20005
#define LIM 205
int v[DIM],cnt[LIM],nr[MAX],val[MAX];
int n,g,v_max;
void read ()
{
int i;
scanf ("%d%d",&n,&g);
for (i=1; i<=n; ++i)
{
scanf ("%d",&v[i]);
++cnt[v[i]];
v_max=max (v_max,v[i]);
}
}
void solve ()
{
int i,j,k;
nr[0]=1;
for (i=v_max; i>=1; --i)
if (cnt[i])
for (j=g-i; j>=0; --j)
if (nr[j])
for (k=1; k<=cnt[i] && j+i*k<=g; ++k)
if (!nr[j+i*k])
{
nr[j+i*k]=nr[j]+k;
val[j+i*k]=j+i*(k-1);
}
else
break ;
}
void print ()
{
for ( ; !nr[g] && g; --g);
printf ("%d %d\n",g,nr[g]-1);
for ( ; g; g=val[g])-
printf ("%d\n",g-val[g]);
}
int main ()
{
freopen ("ghiozdan.in","r",stdin);
freopen ("ghiozdan.out","w",stdout);
read ();
solve ();
print ();
return 0;
}