Cod sursa(job #2722398)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 12 martie 2021 20:05:15
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <fstream>
#include <climits>

using namespace std;

const int WMAX = 5000;

const int INF = INT_MAX / 2;

int dp[2][1 + WMAX];

int main()
{
    ifstream in("energii.in");
    ofstream out("energii.out");

    int g, w;

    in >> g >> w;

    int lin = 1;

    for(int i = 0; i <= w; i++)
    {
        dp[1 - lin][i] = INF;
    }

    for (int i = 1; i <= g; i++, lin = 1 - lin)
    {
        int energie, pret;

        in >> energie >> pret;

        for (int j = 0; j <= w; j++)
        {
            if (j <= energie)
            {
                dp[lin][j] = min(dp[1 - lin][j], pret);
            }
            else
            {
                dp[lin][j] = min(dp[1 - lin][j], dp[1 - lin][j - energie] + pret);
            }
        }
    }

    if(dp[1 - lin][w] == INF)
    {
        out << -1 << '\n';
    }
    else
    {
        out << dp[1 - lin][w] << '\n';
    }

    return 0;
}