Pagini recente » Cod sursa (job #852394) | Cod sursa (job #933460) | Cod sursa (job #690467) | Cod sursa (job #2527320) | Cod sursa (job #1819142)
#include <stdio.h>
int d[75005], b[75005], fr[201];
//d[i][j]=obiecte cu greutate <=i pt cu suma j
int main()
{
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
int n, s, elem;
scanf("%d%d", &n, &s);
for(int i=1; i<=n; i++)
{
scanf("%d", &elem);
fr[elem]++;
}
d[0]=1;
for(int k=200; k>=1; k--)
if(fr[k]!=0)
for(int i=s-k; i>=0; i--)
if(d[i]!=0)
for(int j=1; j<=fr[k] and i+j*k<=s and d[i+j*k]==0; j++)
{
d[i+j*k]=d[i]+j;
b[i+j*k]=k;
}
for(int i=s; i>=1; i--)
if(d[i]!=0)
{
printf("%d %d\n", i, d[i]-1);
while(i!=0)
{
printf("%d\n", b[i]);
i=i-b[i];
}
return 0;
}
return 0;
}