Pagini recente » Cod sursa (job #1782469) | Cod sursa (job #1801058) | Cod sursa (job #2813485) | Cod sursa (job #1481944) | Cod sursa (job #1075321)
#include <fstream>
#include <iostream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,gr;
int a[20001],item[75001],final[20001];
long rez[75001];
int main()
{
f >> n >> gr;
for (int i=1; i<=gr;i++)
f >> a[i];
for (int i=0;i<=gr;i++)
{
rez[i] = 0;
item[i] = 0;
}
for (int i=1;i<=n;i++)
{
for (int j=gr;j>=a[i];--j)
{
if (j-a[i] >= 0 && (rez[j-a[i]] != 0 || j-a[i] == 0))
{
if (item[j] < a[i])
{
rez[j] = 1;
item[j] = a[i];
break;
}
}
}
}
while (rez[gr] == 0) { gr--; }
g << gr << " ";
int poz=0;
while (gr != 0)
{
poz++;
final[poz] = item[gr];
gr -= item[gr];
}
g << poz << "\n" ;
for (int i=1;i<=poz;++i)
g << final[i] << "\n";
return 0;
}