Pagini recente » Cod sursa (job #2540059) | Cod sursa (job #1571682) | Cod sursa (job #1707682) | Cod sursa (job #2513590) | Cod sursa (job #399151)
Cod sursa(job #399151)
#include <cstdio>
using namespace std;
const int NMax = 1 << 20;
const int FMax = 1 << 8;
int frec[FMax], a[NMax], v[NMax], N, G;
int main () {
freopen ("ghiozdan.in", "r", stdin);
freopen ("ghiozdan.out", "w", stdout);
scanf ("%d%d", &N, &G);
for (int i = 1, k; i <= N; ++i) {
scanf ("%d", &k);
++frec[k];
}
int x, y;
for (int i = FMax; i >= 1; --i) {
for (int k = G- i; k>=0;--k) {
if (!k || v[k]) {
for (int j = 1; j <= frec[i]; ++j) {
x=k+i*j;
if (!v[x] && G >= x) {
v[x] = v[x-i]+1;
a[x] = x-i;
}
else {
break;
}
}
}
}
}
int i;
for (i = G; i>=1;--i) {
if (v[i]) {
printf ("%d %d\n", i, v[i]);
break;
}
}
for (x=i, y=a[i];v[i];) {
printf ("%d\n", x-y);
--v[i];
x = y;
y=a[x];
}
return 0;
}