Pagini recente » Cod sursa (job #2461370) | Cod sursa (job #3141794) | Cod sursa (job #2700563) | Cod sursa (job #618126) | Cod sursa (job #2166928)
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,G,k,t,o,b[10001],a[1001][1001],i,s[10001],j,h[10001];
int main()
{
f>>n>>G;
for(i=1;i<=n;i++) f>>b[i];
for(i=1;i<=n-1;i++) for(j=i+1;j<=n;j++) if(b[i]>b[j]) swap(b[i],b[j]);
for(i=1;i<=n;i++)
{
for(j=1;j<=n;j++) a[j][i]=max(b[j]+a[j-1][i-1],a[j-1][i]);
}
for(i=1;i<=n;i++)
{j=n;
while(a[n+1-i][j]>G) j--;
s[n+1-i]=a[n+1-i][j];
} k=-1; o=1;
for(i=2;i<=n;i++) if(s[i-1]<=s[i]) k=i; i=1; g<<s[k];
while(a[k][i]!=s[k]) i++; g<<" "<<i<<'\n';
while(a[k][i]!=0) if(b[k]+a[k-1][i-1]>=a[k-1][i])
{h[o]=b[k]; o++;
k--;
i--;
}
for(i=o-1;i>0;i--) g<<h[i]<<'\n';
return 0;
}