Cod sursa(job #3268733)

Utilizator IonicaDavidIonica David IonicaDavid Data 16 ianuarie 2025 20:48:34
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.18 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

struct generator
{
    int cost, energie;
}v[1005];

const int MAX = 10005, oo = 1e9;

int n, E, dp[15010], EMAX, mn=oo, ok = 1;

int main()
{
    f >> n >> EMAX;
    for (int i = 1; i<=n; ++i)
        f >> v[i].energie >> v[i].cost;
    dp[v[1].energie] = v[1].cost;

    E = v[1].energie;

    for (int i = 1; i <= EMAX + MAX; ++i)
        dp[i] = oo;

    for (int i = 2; i<=n; ++i)
    {
        for (int j = E; j>0; --j)
            if (dp[j] != oo)
                if (v[i].energie + j <= EMAX + MAX && dp[v[i].energie + j] > dp[j] + v[i].cost)
                {
                    dp[v[i].energie + j] = dp[j] + v[i].cost;
                    E = max(E, v[i].energie + j);
                }
        if (v[i].cost < dp[v[i].energie])
            dp[v[i].energie] = v[i].cost;
        E = max(E, v[i].energie);

    }
    for (int i = EMAX; i <= EMAX + MAX; ++i)
        if (dp[i] < mn)
        {
            mn = dp[i];
            ok = 0;
        }


    if (ok == 1)
        g << -1;
    else
        g << mn;

    return 0;
}