Pagini recente » Cod sursa (job #738685) | Cod sursa (job #340255) | Cod sursa (job #165537) | Cod sursa (job #1645135) | Cod sursa (job #2152593)
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n,G,c,x[1000004],i,j,sol,nr,v[1000005],nrs,s,aux,gr[1000005];
int main()
{
fin>>n>>G;
nr=0;
nrs=0;
sol=0;
x[0]=1;
for(i=1;i<=n;i++)
{
fin>>c;
v[i]=c;
for(j=G-c;j>=0;j--)
{
if(x[j]>0 && x[j+c]==0)
{
x[j+c]=c;
if(j+c>sol)
{
sol=j+c;
}
}
}
}
for(i=1;i<=n-1;i++)
{
for(j=i+1;j<=n;j++)
{
if(v[i]<v[j])
{
aux=v[i];
v[i]=v[j];
v[j]=aux;
}
}
}
for(i=1;i<=n;i++)
{
if(gr[v[i]]==0)
{
gr[v[i]]=v[i];
}
j=G-v[i];
while(j>v[i])
{
if(gr[j]>0 && gr[j+v[i]]==0)
{
gr[j+v[i]]=v[i];
}
j=j-1;
}
}
nrs=0;
i=sol;
while(i>0)
{
nrs++;
i=i-gr[i];
}
fout<<sol<<" "<<nrs<<"\n";
for(i=1;i<=nrs;i++)
{
fout<<v[i]<<"\n";
}
return 0;
}