Pagini recente » Cod sursa (job #2059423) | Cod sursa (job #826483) | Cod sursa (job #2463211) | Cod sursa (job #2658406) | Cod sursa (job #3173812)
#include <fstream>
using namespace std;
int rasp[75005],rasp1[75005],rasp2[75005],apar[205];
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int main()
{
int n,g,nr;
cin>>n>>g;
for(int i=1; i<=n; i++)
{
cin>>nr;
apar[nr]++;
}
rasp[0]=1;
int k=200;
while(k!=0)
{
if(apar[k]!=0)
{
for(int i=0; i<=g; i++)
{
if(i+k<=g && rasp[i]!=0 && rasp[i+k]==0)
if(rasp1[i]!=k || rasp2[i]<apar[k])
{
rasp[i+k]=rasp[i]+1;;
rasp1[i+k]=k;
if(rasp1[i]==k)
rasp2[i+k]=rasp2[i]+1;
else
rasp2[i+k]=1;
}
}
}
k--;
}
int m,j=g,var;
while(rasp[j]==0)
j--;
cout<<j<<" "<<rasp[j]-1<<'\n';
m=rasp[j];
while(j!=0)
{
var=rasp2[j];
while(rasp2[j]!=0)
{
cout<<rasp1[j]<<'\n';
rasp2[j]--;
}
j-=rasp1[j]*var;
}
return 0;
}