Pagini recente » Cod sursa (job #2311380) | Cod sursa (job #1470160) | Cod sursa (job #1788950) | Cod sursa (job #685766) | Cod sursa (job #1173006)
#include<stdio.h>
#include<algorithm>
#define maxg 75005
#define maxv 205
#define inf 0x3f3f3f3f
using namespace std;
int n,G;
int s[maxg],nr[maxv],p[maxg];
void read()
{
int x;
scanf("%d%d",&n,&G);
for(int i=1;i<=n;i++) scanf("%d",&x),nr[x]++;
}
void solve()
{
s[0]=0;
for(int i=1;i<=G;i++) s[i]=inf;
for(int i=200;i;i--)
if(nr[i])
for(int j=G-i;j>=0;j--)
if(s[j]!=inf)
for(int k=1;k<=nr[i] && j+i*k<=G && s[j+i*k]==inf;k++)
{
s[j+i*k]=s[j]+k;
p[j+i*k]=i;
}
int last;
for(last=G;s[last]==inf;last--);
printf("%d %d\n",last,s[last]);
for(int i=last;p[i];i-=p[i]) printf("%d\n",p[i]);
}
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
read();
solve();
fclose(stdin);
fclose(stdout);
return 0;
}