Pagini recente » Cod sursa (job #1567184) | Cod sursa (job #105821) | Rating Jmp0xb055 (UPBSeritanGemanDumitrescu) | Monitorul de evaluare | Cod sursa (job #2678046)
#include <bits/stdc++.h>
#define Gmax 75005
using namespace std;
int n, G, w[20005], dp[75005], i, j, maxx, fr[75005];
int main()
{
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
f >> n >> G;
for(i = 1; i <= n; i ++)
{
f >> w[i];
fr[w[i]] ++;
}
for(i = 1; i <= G; i ++)
dp[i] = Gmax;
for(i = 1; i <= n; i ++)
for(j = G; j >= w[i]; j --)
if(dp[j] > dp[j - w[i]] + 1)dp[j] = dp[j - w[i]] + 1, maxx = max(maxx, j);
g << maxx << " " << dp[maxx] << "\n";
for(i = maxx - 1; i >= 0; i --)
if(dp[maxx] == dp[i] + 1 && fr[maxx - i] > 0)
{
g << maxx - i << "\n";
fr[maxx - i] --;
maxx = i;
}
return 0;
}