Cod sursa(job #2121664)

Utilizator FredyLup Lucia Fredy Data 4 februarie 2018 00:51:02
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream fin ("energii.in");
ofstream fout ("energii.out");

#define lim 1010
int n, gmin, s;
int en[lim], c[lim];
int dp[lim][5*lim]; /// dp[i][j] cost minim pt exact j unitati de en. produsa din primele i generatoare

int main()
{
    fin>>n>>gmin;
    for (int i=1; i<=n; i++)
        fin>>en[i]>>c[i], s+=en[i];

    if (s<gmin)
    {
        fout<<-1;
        return 0;
    }

    for (int i=0; i<=gmin; i++)
        dp[0][i]=2e9;

    for (int i=1; i<=n; i++)
        for (int j=1; j<=gmin; j++)
            if (j < en[i])  dp[i][j] = min (dp[i-1][j], c[i]);
            else dp[i][j] = min (dp[i-1][j], dp[i-1][j-en[i]]+c[i]);

    fout<<dp[n][gmin];

    fout.close();
    return 0;
}