Cod sursa(job #2166928)

Utilizator KennyyyGardner Kenneth Benjamin Kennyyy Data 13 martie 2018 19:30:42
Problema Ghiozdan Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#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;
}