Cod sursa(job #2125268)

Utilizator RazorBestPricop Razvan Marius RazorBest Data 8 februarie 2018 12:22:46
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>
#define oo 0x7fffffff
using namespace std;

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

int dp[10001], n, G;
int g[1001], p[5001];

int dinamica()
{
    int mx = 0;

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

    for (int i = 1; i <= n; i++)
    {
        for (int j = G; j >= 0; j--)
        {
            if (dp[j] != oo)
            {
                dp[j + g[i]] = min(dp[j + g[i]], dp[j] + p[i]);
                mx = max(mx, j + g[i]);
            }
        }
    }

    if (mx < G)
        return -1;

    int mn = oo;
    for (int i = G; i <= mx; i++)
        mn = min(mn, dp[i]);

    return mn;
}


int main()
{
    fin >> n >> G;
    for (int i = 1; i <= n; i++)
        fin >> g[i] >> p[i];

    fout << dinamica();
}