Pagini recente » Cod sursa (job #906052) | Cod sursa (job #1711221) | Cod sursa (job #2327945) | Cod sursa (job #854085) | Cod sursa (job #2019280)
#include <fstream>
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int n,g,i,j,k,x,mx,num,f[201],ok[75001],nr[75001];
int main()
{
cin>>n>>g;
for(i=1;i<=n;i++)
{
cin>>x;
if(x>mx)
mx=x;
f[x]++;
}
ok[0]=1;
for(i=mx;i>=1;i--)
{
bool stg=1;
for(j=g;j>=0;j--)
{
if(ok[j])
{
for(k=1;k<=f[i]&&k*i+j<=g;k++)
{
if(nr[k*i+j]==0||nr[k*i+j]>nr[j]+k+1)
{
ok[k*i+j]=(k-1)*i+j+1;
nr[k*i+j]=nr[j]+k;
stg=0;
}
}
}
if(n>500&&stg==0)
break;
}
}
i=g;
while(ok[i]==0&&i>=1)i--;
cout<<i<<" "<<nr[i]<<"\n";
while(i)
{
cout<<i-(ok[i]-1)<<"\n";
i=ok[i]-1;
}
return 0;
}