Pagini recente » Cod sursa (job #2978965) | Cod sursa (job #867135) | Cod sursa (job #2374036) | Cod sursa (job #437504) | Cod sursa (job #2364061)
#include <cstdio>
#include <vector>
#include <iostream>
using namespace std;
const int INF=20000;
int v[75005],f[205],bacc[75005];
vector <int> ans;
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
int n,g,i,j,k,x,gmax,nmin,aux,mx=0;
scanf("%d%d",&n,&g);
for(i=1;i<=n;++i)
{
scanf("%d",&x);
f[x]++;
mx=max(mx,x);
}
for(i=mx;i>=1;--i)
if(f[i])
for(j=g-i;j>=0;--j)
if(v[j]||j==0)
{
k=1;
while(k<=f[i]&&j+k*i<=g&&!v[j+k*i])
{
v[j+k*i]=v[j]+k;
bacc[j+k*i]=i;
++k;
}
}
for(i=g;i>=1;--i)
if(v[i])
{
gmax=i;
nmin=v[i];
break;
}
printf("%d %d\n",gmax,nmin);
aux=gmax;
while(aux)
{
printf("%d\n",bacc[aux]);
aux-=bacc[aux];
}
return 0;
}