Pagini recente » Cod sursa (job #2779863) | Cod sursa (job #1068341) | Cod sursa (job #877707) | Cod sursa (job #1942472) | Cod sursa (job #2202934)
#include <bits/stdc++.h>
#define inf 31313
using namespace std;
int n, s;
unsigned short best[80000], nr[300], a[22222], t[80000];
int main()
{
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int i,j,k;
cin>>n>>s;
for (i=0; i<n; i++)
cin>>k, nr[k]++;
n=0;
for (i=250; i>0; i--)
for (j=0; j<nr[i]; j++) a[n++]=i;
for (i=1; i<=s; i++) best[i]=inf;
best[0]=0;
int last=0;
for (i=0; i<n; i++){
k=a[i];
last+=k;
if (last>s) last=s;
for (j=last; j>=k; j--)
if (best[j-k]+1<best[j])
best[j]=best[j-k]+1, t[j]=k;
if (best[s]<inf) break;
}
while (best[s]==inf) s--;
cout<< s<<" "<<best[s]<<"\n";
while (s) cout<< t[s]<<"\n", s-=t[s];
return 0;
}