Pagini recente » Cod sursa (job #2982685) | Cod sursa (job #2055752) | Cod sursa (job #498670) | Cod sursa (job #1155147) | Cod sursa (job #1650663)
#include <cstdio>
#include <set>
#include <algorithm>
#include <stack>
#define nmax 205
#define gmax 75005
#define inf 1<<29
using namespace std;
int n,g,d[gmax],a[gmax];
int v[nmax];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d %d",&n,&g);
int i,j,k;
for (i=1;i<=n;i++) {
scanf("%d",&j);
v[j]++;
}
d[0]=1;
for (i=200;i>=1;i--)
if (v[i])
for (k=g-i;k>=0;k--)
if (d[k])
for (j=1;j<=v[i]&&k+i*j<=g;j++)
if (!d[k+i*j])
{
d[k+i*j]=d[k]+j;
a[k+i*j]=i;
}
else
break;
while (!d[g])
g--;
printf("%d %d\n",g,d[g]-1);
while (d[g]!=1) {
printf("%d\n",a[g]);
g-=a[g];
}
return 0;
}