Pagini recente » Cod sursa (job #3282963) | Cod sursa (job #2596384) | Cod sursa (job #286270) | Cod sursa (job #2780287) | Cod sursa (job #470274)
Cod sursa(job #470274)
#include <fstream>
using namespace std;
int v[1<<17],a[1<<16],n,g;
bool use[1<<16];
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
void scr(int x)
{
if (!x)
return;
for (int i=n;i;i--)
if (v[x]-1==v[x-a[i]] && !use[i])
{
use[i]=true;
scr(x-a[i]);
out<<a[i]<<"\n";
break;
}
}
int main()
{
int i,j;
in>>n>>g;
for (i=1;i<=n;i++)
in>>a[i];
sort(a+1,a+n+1);
v[0]=1;
for (i=n;i;i--)
for (j=g-a[i];j>=0;j--)
if (v[j] && (v[j+a[i]]>v[j]+1 || !v[j+a[i]]))
v[j+a[i]]=v[j]+1;
for (i=g;i;i--)
if (v[i])
break;
out<<i<<" "<<v[i]-1<<"\n";
scr(i);
return 0;
}