Pagini recente » Cod sursa (job #187999) | Cod sursa (job #781897) | Cod sursa (job #266160) | Cod sursa (job #2122623) | Cod sursa (job #1941407)
#include <cstdio>
using namespace std;
int last[75005], d[75005], f[200];
int main()
{
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
int n, g, poz, nr, x;
scanf("%d %d", &n, &g);
for (int i = 1; i <= n; ++i){
scanf("%d", &nr);
++f[nr];
}
d[0] = 1;
for (int i = 200; i > 0; --i)
for (int j = g - i; j >= 0; --j)
if (d[j] != 0)
for (int k = 1; j + i * k <= g && k <= f[i] && !d[j + k * i]; ++k)
{
poz = j + k * i;
d[poz] = d[j] + k;
last[poz] = j;
}
for (int i = g; i > 0; --i)
if(d[i] != 0)
{
printf("%d %d\n", i, d[i] - 1);
while (i > 0)
{
nr = d[i] - d[last[i]];
x = (i - last[i]) / nr;
for (int j = 1; j <= nr; ++j)
printf("%d\n", x);
i = last[i];
}
return 0;
}
return 0;
}