Pagini recente » Cod sursa (job #2711476) | Cod sursa (job #825385) | Cod sursa (job #2675935) | Cod sursa (job #603680) | Cod sursa (job #2388489)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream fout("ghiozdan.out");
int g[75001], v[75001], ob[75001], maxi, maxi2, urmator, k, n, G, i , j;
void citire()
{
f>>n;
f>>G;
for (i=1;i<=n;i++)
{ f>>n;
if (maxi<n) maxi=n;
g[n]++;
}
for (i=1;i<=G;i++) v[i]=201;
}
void solve()
{
v[0]=0;
maxi2=0;
for (i=maxi;i>=1;i--)
{
if (g[i]>0)
{ for (j=maxi2;j>=0;j--)
{ urmator=j;
for (k=1; k<=g[i] && urmator+i<=G && v[urmator+i]>v[urmator]+1; k++)
{ v[urmator+i]=v[urmator]+1;
ob[urmator+i]=urmator;
if (urmator+i>maxi2) maxi2=urmator+i;
urmator=urmator+i;
}
}
}
}
fout<<maxi2<<" "<<v[maxi2];
fout<<'\n';
for (i=maxi2;i!=0;)
{ fout<<i-ob[i]<<'\n';
i=ob[i];
}
}
int main()
{
citire();
solve();
return 0;
}