Pagini recente » Cod sursa (job #1487701) | Cod sursa (job #1272434) | Cod sursa (job #229793) | Cod sursa (job #1975768) | Cod sursa (job #610245)
Cod sursa(job #610245)
#include <fstream>
using namespace std;
const int N=75001,M=20001;
int v[N],a[M],n,g,D=-1;
char PRINT[5*N];
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
void add(int x)
{
if (x<10)
{
PRINT[++D]=x+'0';
return;
}
add(x/10);
PRINT[++D]=x%10+'0';
}
void scr(int x)
{
if (!x)
return;
for (int i=1;i<=200;i++)
if (v[x]-1==v[x-i] && a[i])
{
a[i]--;
add(i);
PRINT[++D]='\n';
scr(x-i);
break;
}
}
int main()
{
int i,j,x;
in>>n>>g;v[0]=1;
for (i=1;i<=n;i++)
{
in>>x;
a[x]++;
for (j=g-x;j>=0;j--)
if (v[j] && (v[j+x]>v[j]+1 || !v[j+x]))
v[j+x]=v[j]+1;
}
for (i=g;!v[i];i--);
add(i);
PRINT[++D]=' ';
add(v[i]-1);
PRINT[++D]='\n';
scr(i);
out<<PRINT;
return 0;
}