Cod sursa(job #3336903)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 26 ianuarie 2026 16:48:31
Problema Ghiozdan Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#pragma GCC optimize("Ofast,unroll-loops")
#include <fstream>
#include <algorithm>
#define gmax 75002
#define nmax 20002
#define inf 1e9
using namespace std;
ifstream cin("ghiozdan.in");
ofstream cout("ghiozdan.out");
int n,g,x,dp[gmax],t[gmax],a[nmax],maxi,sum;
void rec(int n){
    while(t[n]!=0){
        cout<<n-t[n]<<'\n';
        n=t[n];
    }
    cout<<n-t[n]<<'\n';
}
signed main()
{
    cin>>n>>g;
    for(int i=1;i<=g;i++)
        dp[i]=inf;
    for(int i=1;i<=n;i++)
        cin>>a[i];
    sort(a+1,a+n+1);
    for(int i=n;i>0;i--){
        for(int j=min(sum,g-a[i]);j>=0;j--)
            if(dp[j]!=inf&&dp[j+a[i]]==inf){
                dp[j+a[i]]=dp[j]+1;
                t[j+a[i]]=j;
                maxi=max(maxi,j+a[i]);
            }
        sum+=a[i];
    }
    cout<<maxi<<" "<<dp[maxi]<<'\n';
    rec(maxi);
    return 0;
}