Pagini recente » Cod sursa (job #646540) | Cod sursa (job #311949) | Istoria paginii utilizator/palescu-alexandru | Monitorul de evaluare | Cod sursa (job #640945)
Cod sursa(job #640945)
# include <cstdio>
using namespace std;
int a, n, i, j, k, max, G;
int ct[202], A[75005], rez[75005], cate[75005];
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%d%d",&n,&G);
for (i = 1; i <= n; i++)
{
scanf("%d",&a);
ct[a]++;
//if (max < a) max = a;
}
for (i = 1; i <= G; i++)
A[i] = 1000000;
for (i = 202; i >= 1; i--)
if (ct[i])
for (j = G; j >= i; j--)
for (k = 0; k <= ct[i] && j >= k * i; k++)
if (A[j] > A[j - k * i] + k)
{
A[j] = A[j - k * i] + k;
rez[j] = i;
cate[j] = k;
}
else if (A[j] != 1000000) break;
while (A[G] == 1000000) G--;
printf("%d %d\n",G,A[G]);
while (G)
{
for (i = 1; i <= cate[G]; i++)
printf("%d\n",rez[G]);
G -= rez[G] * cate[G];
}
return 0;
}