Pagini recente » Cod sursa (job #1913117) | Cod sursa (job #1851065) | Cod sursa (job #1392930) | Cod sursa (job #427404) | Cod sursa (job #1722102)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
int w[20001],p[2000001],v[20001];
int main()
{
FILE *fin=fopen ("ghiozdan.in","r");
FILE *fout=fopen ("ghiozdan.out","w");
int n,g,s,i,j,x,elem;
fscanf (fin,"%d%d",&n,&g);
s=0;
for (i=1;i<=n;i++)
fscanf (fin,"%d",&v[i]);
sort (v+1,v+n+1);
for (i=1;i<=n;i++){
x=v[i];
s+=x;
for (j=s;j>=x;j--){
if (p[j-x]!=0 && p[j]==0)
p[j]=x;
}
p[x]=x;
}
i=g;
while (p[i]==0)
i--;
fprintf (fout,"%d ",i);
s=i;
elem=0;
while (p[i]!=0){
s-=p[i];
w[++elem]=p[i];
i=s;
}
fprintf (fout,"%d\n",elem);
for (i=1;i<=elem;i++)
fprintf (fout,"%d\n",w[i]);
return 0;
}