Pagini recente » Cod sursa (job #1327266) | Cod sursa (job #50604) | Cod sursa (job #773833) | Cod sursa (job #1671868) | Cod sursa (job #2588863)
#include <bits/stdc++.h>
#define PLEC fin.close(); fout.close(); return 0;
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n, sum, x, freq[205], dp[75005], last[75005], to;
int main()
{
fin >> n >> sum;
for (int i = 1; i <= n; ++i) {
fin >> x;
++freq[x];
}
dp[0] = 1;
for (int i = 200; i; --i)
if (freq[i])
for (int g = sum; g >= 0; --g)
if (dp[g]) {
to = min(freq[i], (sum - g) / i);
for (int k = 1; k <= to; ++k)
if (!dp[k * i + g])
dp[k * i + g] = dp[g] + k, last[k * i + g] = i;
}
while (!dp[sum])
--sum;
fout << sum << ' ' << dp[sum] - 1 << '\n';
while (--dp[sum]) {
fout << last[sum] << '\n';
sum -= last[sum];
}
PLEC
}