Cod sursa(job #1922516)

Utilizator ProCoderAgafitei Razvan ProCoder Data 10 martie 2017 17:46:21
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <fstream>

using namespace std;

struct generator
{
    int energie;
    int cost;
};

const int NMAX = 1000 + 5;
const int WMAX = 5000 + 5;
const int INF = 0x3f3f3f3f;

generator serie;
int nr_generatoare, energie_minima, ans = INF;
int dp[NMAX][WMAX];

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

    cin >> nr_generatoare >> energie_minima;

    for (int i = 0; i <= nr_generatoare; ++i)
        for (int j = 1; j <= energie_minima; ++j)
            dp[i][j] = INF;

    dp[0][0] = 0;

    for (int i = 1; i <= nr_generatoare; ++i)
    {
        cin >> serie.energie >> serie.cost;
        for (int j = 1; j <= energie_minima; ++j)
        {
            dp[i][j] = min(dp[i - 1][j], dp[i - 1][max(0, j - serie.energie)] + serie.cost);
            if (j == energie_minima)
                ans = min(ans, dp[i][j]);
        }
    }

    if (ans == INF)
        cout << -1 << '\n';
    else
        cout << ans << '\n';
    return 0;
}