Cod sursa(job #1923323)

Utilizator micutuAndrei Vasile micutu Data 10 martie 2017 22:35:09
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.02 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;
}