Cod sursa(job #3144075)

Utilizator Luca529Taschina Luca Luca529 Data 4 august 2023 11:14:55
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream fin("ghiozdan.in");
ofstream fout("ghiozdan.out");
int dp[75001], u[75001], nr[75001], f[201];

void F(int s)
{if(u[s]!=0)
 {fout<<u[s]<<"\n";
  F(s-u[s]);
 }
}

int main()
{   int n, s, a;
    fin>>n>>s;
    for(int i=1;i<=n;i++)
    {fin>>a;
     f[a]++;
    }

    for(int i=200;i>0;i--)
    if(f[i]!=0)
    {for(int j=i;j<=s;j++)
     if((j==i || dp[j-i]!=0) && (dp[j]==0 || dp[j]>dp[j-i]+1))
     {if(u[j-i]!=i)dp[j]=dp[j-i]+1, nr[j]=1, u[j]=i;
      else if(nr[j-i]<f[i])dp[j]=dp[j-i]+1, nr[j]=1+nr[j-i], u[j]=i;
     }
    }

    while(dp[s]==0)
    s--;

    fout<<s<<" "<<dp[s]<<"\n";
    F(s);
    return 0;
}