Pagini recente » Cod sursa (job #2353077) | Cod sursa (job #508405) | Cod sursa (job #1426992) | Cod sursa (job #1035886) | Cod sursa (job #1081179)
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <queue>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
const int Greu = 205;
const int Gmax = 76000;
int N, G, FR[Greu], DP[Gmax], T[Gmax];
int main()
{
fin >> N >> G;
for(int i=1; i <= N; i++)
{
int val; fin >> val;
FR[val]++;
}
DP[0] = 1;
for(int i=200; i > 0; i--)
if(FR[i])
for(int j = G - i; j >= 0; j--)
if(DP[j])
for(int k = 1; k <= FR[i] && j + k * i <= G && !DP[j + k * i]; k++)
{
DP[j + k * i] = DP[j] + k;
T[j + k * i] = i;
}
for(int i=G; i >= 1; i--)
if(DP[i])
{
fout<<i<<' '<<DP[i] - 1<<'\n';
fout<<T[i]<<'\n';
while(i - T[i])
{
i -= T[i];
fout<<T[i]<<'\n';
}
return 0;
}
return 0;
}