Cod sursa(job #2523719)

Utilizator levladiatorDragutoiu Vlad-Ioan levladiator Data 14 ianuarie 2020 17:58:53
Problema Ghiozdan Scor 50
Compilator cpp-64 Status done
Runda Lista lui wefgef Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int dp[75005],i,j,n,g,maxim,val,u[75005];


int main()
{
    fin>>n>>g>>val;
    for(i=2;i<=n;i++)
    {
        fin>>val;
        if(val<=g)
        {
            for(j=maxim;j>=1;j--)
            {
                if(dp[j]>0)
                {
                    if(dp[j+val]>dp[j]+1||dp[j+val]==0)
                    {
                        dp[j+val]=dp[j]+1;
                        u[j+val]=j;
                    }
                }
            }
            dp[val]=1;
            maxim+=val;
            if(maxim>g)maxim=g;
        }
    }
    for(i=g;i>=1;i--)
    {
        if(dp[i]>0)break;
    }
    fout<<i<<" "<<dp[i]<<endl;
    int cnt=0;
    while(u[i]>0)
    {
        fout<<i-u[i]<<endl;
        i=u[i];
    }
    fout<<i-u[i];
}