Pagini recente » Cod sursa (job #2851892) | Cod sursa (job #68757) | Cod sursa (job #2311815) | Cod sursa (job #97325) | Cod sursa (job #2569640)
#include<bits/stdc++.h>
using namespace std;
const int NMAX=75005;
const int VMAX=205;
int dp[NMAX],last[NMAX],f[VMAX];
int main(){
freopen("ghiozdan.in","r",stdin);
freopen("ghiozdan.out","w",stdout);
int n,G;
scanf("%d%d", &n, &G);
for(int i=1;i<=n;i++){
int g;
scanf("%d", &g);
f[g]++;
}
dp[0]=1;
for(int i=VMAX;i>=1;i--){
for(int j=G;j>=0;j--){
if(!dp[j])
continue;
for(int d=1;d*i+j<=G && d<=f[i];d++){
if(dp[d*i+j])
break;
dp[d*i+j]=dp[j]+d;
last[d*i+j]=i;
}
}
}
int gmax=G;
while(dp[gmax]==0)
gmax--;
printf("%d %d\n", gmax, dp[gmax]-1);
int nr=dp[gmax]-1;
for(int i=1;i<=nr;i++){
printf("%d\n", last[gmax]);
gmax-=last[gmax];
}
return 0;
}