Pagini recente » Cod sursa (job #2804730) | Cod sursa (job #3137863) | Cod sursa (job #1956547) | Cod sursa (job #2356536) | Cod sursa (job #2974034)
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,x,a[204],last[76000],G;
int d[76000];
int main()
{
f>>n>>G;
for(int i=1;i<=n;i++)
{
f>>x;
a[x]++;
}
d[0]=1;
for(int i=200;i>0;i--)
if(a[i])
{
for(int j=G-i;j>=0;j--)
if(d[j])
for(int nr=1;nr<=a[i]&&nr*i+j<=G;nr++)
if(!d[nr*i+j])
{
d[nr*i+j]=d[j+(nr-1)*i]+1;
last[nr*i+j]=i;
}
}
int cur=G+1;
while(!d[--cur]);
g<<cur<<" "<<d[cur]-1<<'\n';
while(cur)
{
g<<last[cur]<<'\n';
cur-=last[cur];
}
return 0;
}