Cod sursa(job #2678043)

Utilizator butasebiButa Gabriel-Sebastian butasebi Data 27 noiembrie 2020 23:36:25
Problema Ghiozdan Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <bits/stdc++.h>
#define Gmax 75005
using namespace std;
int n, G, g[20005], dp[75005], i, j, maxx, fr[75005];
int main()
{
    freopen("ghiozdan.in", "r", stdin);
    freopen("ghiozdan.out", "w", stdout);
    scanf("%d %d", &n, &G);
    for(i = 1; i <= G; i ++)
        dp[i] = Gmax;
    for(i = 1; i <= n; i ++)
    {
        scanf("%d", &g[i]);
        fr[g[i]] ++;
        for(j = G; j >= g[i]; j --)
            if(dp[j] > dp[j - g[i]] + 1)dp[j] = dp[j - g[i]] + 1, maxx = max(maxx, j);
    }
    printf("%d %d\n", maxx, dp[maxx]);
    for(i = maxx - 1; i >= 0; i --)
        if(dp[maxx] == dp[i] + 1 && fr[maxx - i] > 0)
        {
            printf("%d\n", maxx - i);
            fr[maxx - i] --;
            maxx = i;
        }
    return 0;
}