Pagini recente » Cod sursa (job #1730771) | Cod sursa (job #1730407) | Cod sursa (job #2520581) | Cod sursa (job #1153754) | Cod sursa (job #3336900)
#include <fstream>
#include <algorithm>
#define gmax 75002
#define nmax 20002
#define inf 1e9
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int n,g,x,dp[gmax],t[gmax],a[nmax],maxi,sum;
void rec(int n){
if(t[n]!=0)
rec(t[n]);
cout<<n-t[n]<<'\n';
}
signed main()
{
cin>>n>>g;
for(int i=1;i<=g;i++)
dp[i]=inf,t[i]=-1;
for(int i=1;i<=n;i++)
cin>>a[i];
sort(a+1,a+n+1);
for(int i=n;i>0;i--){
for(int j=min(sum,g-x);j>=0;j--)
if(dp[j]!=inf&&dp[j+a[i]]>dp[j]+1){
dp[j+a[i]]=dp[j]+1;
if(t[j+a[i]]==-1)
t[j+a[i]]=j;
maxi=max(maxi,j+a[i]);
}
sum+=a[i];
}
cout<<maxi<<" "<<dp[maxi]<<'\n';
rec(maxi);
return 0;
}