Pagini recente » Cod sursa (job #1027895) | Cod sursa (job #2221077) | Cod sursa (job #2868809) | Cod sursa (job #788630) | Cod sursa (job #1020942)
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
long long a[200001],app[200000],c[200000],n,p,j,k,nr,i,x;
int main()
{
f>>n>>k;
for (i=1;i<=k;i++)
a[i]=200000;
for (i=1;i<=n;i++)
{
f>>x;
app[x]++;
for (j=k-x;j>=0;j--)
if (a[j]+1<a[j+x])
a[j+x]=a[j]+1;
}
for (i=k;i>=1;i--)
if (a[i]!=200000)
{
p=i;
break;
}
g<<p<<" "<<a[p]<<'\n';
for (i=k;i>=1;i--)
while (p && app[i] && a[p-i]!=200000)
{
app[i]--;
c[++nr]=i;
p-=i;
}
for (i=1;i<=nr;i++)
g<<c[i]<<'\n';
f.close();
g.close();
}