Cod sursa(job #1746638)

Utilizator leraValeria lera Data 23 august 2016 17:43:55
Problema Ghiozdan Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int n,i,g,k,G,gg,maxx;
int gr[20001],dp[75001],lg[75001],pre[75001],v[20001];
int main()
{
    fin>>n>>G;
    for(i=1;i<=n;i++)
        fin>>gr[i];
    dp[0]=1;
    for(i=1;i<=n;i++)
        {
            maxx=0;
            for(g=G;g>=gr[i];g--)
                if(dp[g-gr[i]]==1)
                {
                    dp[g]=1;

                    if(g>maxx)
                    {
                        maxx=g;
                        if(lg[g]>lg[g-gr[i]]+1 || lg[g]==0)
                        {
                            lg[g]=lg[g-gr[i]]+1;
                            pre[g]=i;
                        }
                    }
                }
        }
    gg=maxx;k=0;
    while(gg!=0)
        {
            v[++k]=pre[gg];
            gg=gg-gr[pre[gg]];
        }
    fout<<maxx<<" "<<k<<'\n';

    for(i=k;i>=1;i--)
                fout<<gr[v[i]]<<'\n';

    return 0;
}