Pagini recente » Cod sursa (job #1112144) | Cod sursa (job #1898219) | Cod sursa (job #2826953) | Cod sursa (job #2110845) | Cod sursa (job #2166857)
#include <fstream>
using namespace std;
ifstream f("ghiozdan.in");
ofstream g("ghiozdan.out");
int n,G,k,t,b[100],a[100][100],i,s[100],j;
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;
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])
{g<<b[k]<<'\n';
k--;
i--;
}
else
return 0;
}