Pagini recente » Cod sursa (job #1920064) | Cod sursa (job #2906431) | Cod sursa (job #1760685) | Cod sursa (job #443327) | Cod sursa (job #1738243)
#include <bits/stdc++.h>
using namespace std;
int f[205],
l[75005],
u[75005];
vector<int> ant;
int main(void) {
freopen("ghiozdan.in", "r", stdin);
freopen("ghiozdan.out", "w", stdout);
memset(l, 0xFF, sizeof(l));
int n, g, t, ans;
l[0] = 0;
scanf("%d%d",&n,&g);
while(n--) {
scanf("%d",&t);
f[t]++;
}
for(int i=200; i; --i) {
for(int j=g; j>=0; --j) if(l[j]>=0) {
for(int k=1; k<=f[i] && j+k*i<=g && l[j+k*i]<0; ++k) {
t = j + k * i;
l[t] = j;
u[t] = i;
}}}
for(ans=g; l[ans]==-1; --ans);
t = ans;
while(t) {
ant.push_back(u[t]);
t-= u[t];
}
printf("%d %d\n",ans,ant.size());
for(int i:ant)
printf("%d\n",i);
fclose(stdin);
fclose(stdout);
return 0;
}