Pagini recente » Cod sursa (job #374826) | Cod sursa (job #254091) | Cod sursa (job #2930863) | Cod sursa (job #586295) | Cod sursa (job #495696)
Cod sursa(job #495696)
#include<algorithm>
#include<vector>
using namespace std;
#define N_MAX 20002
#define G_MAX 75002
#define si short int
int tata[G_MAX];
si dp[G_MAX];
si a[N_MAX];
int g,j,poz;
si i,n;
vector <si> sol;
int main()
{
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
scanf("%hd%d",&n,&g);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
reverse(a+1,a+n+1);
for(i=1;i<=n;i++)
{
for(j=g;j>=a[i];j--)
if(dp[j-a[i]]&&dp[j]==0)
{
dp[j]=i;
tata[j]=j-a[i];
}
dp[a[i]]=i;
}
for(j=1;j<=g;j++)
if(dp[j])
poz=j;
printf("%d ",poz);
while(poz)
{
sol.push_back(dp[poz]);
poz=tata[poz];
}
printf("%d\n",(int)sol.size());
for(i=0;i<(int)sol.size();i++)
printf("%d\n",a[sol[i]]);
return 0;
}