Pagini recente » Cod sursa (job #2317245) | Cod sursa (job #2545148) | Cod sursa (job #775855) | Cod sursa (job #2039451) | Cod sursa (job #2282437)
#include<fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n,gmax, a[75005],b[75005],g[202],i,j,pmax,x,xmax,k,l;
int infinit=30000;
int main()
{
fin>>n>>gmax;
for(i=1; i<=n; i++)
{
fin>>x;
xmax=max(xmax,x);
g[x]++;
}
for(i=1; i<=gmax; i++)
{
a[i]=infinit;
}
a[0]=0;
pmax=0;
for(i=xmax; i>=1; i--)
{
if(g[i]>0)
{
for(j=pmax; j>=0; j--)
{
l=j;
for(k=1; k<=g[i] && l+i<=gmax && a[l+i]>a[l]+1; k++)
{
a[l+i]=a[l]+1;
b[l+i]=l;
if(l+i>pmax)
{
pmax=l+i;
}
l=l+i;
}
}
}
}
fout<<pmax<<" "<<a[pmax]<<"\n";
for(i=pmax; i!=0; i=b[i])
{
fout<<i-b[i]<<"\n";
}
return 0;
}