Cod sursa(job #2449442)

Utilizator Ionut28Porumb Palincas Ionut Ionut28 Data 19 august 2019 18:30:48
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

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

const int gmax = 1005;
const int wmax = 5001;
const int inf = 2e9;
int g, w, ec[gmax], c[gmax], dp[gmax][wmax];
/*
int recursiv(int w, int i)
{
    if(i == 0)
    {
        if(w >= enecesar)
            return 0;
        return 1e9;
    }
    else
    {
        return min(recursiv(w + ec[i], i - 1) + cost[i], recursiv(w, i - 1));
    }
}
*/
int main()
{
    fin >> g >> w;
    for(int i = 1; i <= g; ++i)
    {
        fin >> ec[i] >> c[i];
    }
    for(int i = 1; i <= g; ++i)
        for(int j = 1; j <= w; ++j)
            dp[i][j] = inf;
    dp[1][ec[1]] = c[1];
    for(int i = 2; i <= g; ++i)
    {
        for(int j = 1; j <= w; ++j)
        {
            dp[i][j] = dp[i - 1][j];
            if(j >= ec[i])
                dp[i][j] = min(dp[i][j], dp[i - 1][j - ec[i]] + c[i]);
            else
                dp[i][j] = min(dp[i][j], c[i]);
        }
    }
    if(dp[g][w] != inf)
        fout << dp[g][w] << "\n";
    else
        fout << -1 << "\n";
    return 0;
}