Cod sursa(job #2542100)

Utilizator Tudor_PascaTudor Pasca Tudor_Pasca Data 9 februarie 2020 14:42:16
Problema Energii Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <iostream>
#include <fstream>
#include <utility>

using namespace std;

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

int v[1100][5100];
int g, w;
pair<int, int> gen[1100];
const int MAXI = 1e7;

void scan()
{
    in >> g >> w;

    for(int i = 1; i <= g; i++)
        in >> gen[i].first >> gen[i].second;
}

void preFill()
{
    for(int i = 1; i <= w; i++)
    {
        if(gen[1].first >= i)
            v[1][i] = gen[1].second;
        else
            v[1][i] = MAXI;
    }
}

void solve()
{
    for(int i = 2; i <= g; i++)
    {
        for(int j = 1; j <= w; j++)
        {
            if(j - gen[i].first >= 0)
                v[i][j] = min(v[i-1][j], v[i-1][j - gen[i].first] + gen[i].second);
            else
                v[i][j] = min(v[i-1][j], gen[i].second);
        }
    }
}

int main()
{
    scan();

    preFill();

    solve();

    /*for(int i = 1; i <= g; i++)
    {
        for(int j = 1; j <= w; j++)
            cout << v[i][j] << ' ';

        cout << '\n';
    }*/

    out << v[g][w] << '\n';

    return 0;
}