Cod sursa(job #2886976)

Utilizator David0911David Teregovan David0911 Data 8 aprilie 2022 17:29:42
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.34 kb

#include <bits/stdc++.h>

using namespace std;

ifstream fin("energii.in");
ofstream fout("energii.out");
int n, w, x;
int e[5005],c[5005],cost[10005] = {-1};
int minim = 0;

const int MAX = 999999999;
int main()
{
    fin >> n >> w;
    for(int i = 1; i <= n; i++)
    {
        fin >> e[i] >> c[i];
    }
    for(int i = 1; i <= w; i++)
        cost[i] = MAX;
    // en[i] -> totalul de energie pt fiecare grupare
    // en[i] -> costul minim pentru a ajunge la energie de valoare i
    /*
    j - i
    j -> cantitate de energie
    i -> indice pentru generatoare*/
    for(int i = 1 ; i <= n; i++)
    {
        for(int j =  w ; j >= 0; j--)
        {
            /// suntem la generatorul i ce poate produce e[i] energie cu cost c[i]
            /// noi avem de produs j energii
            if(e[i] >= j)
                cost[j] = min(cost[j],c[i]);
            else
                cost[j] = min(cost[j],  cost[j - e[i]] + c[i]);
        }
    }
    if(cost[w] != MAX)
        fout << cost[w];
    else
        fout << -1;
    return 0;
}

/*
1 2 3 ................. w

           j - e[i]   j
      e[i]


8 energii -> generator 1 3 energii si generator 4 care produce 5 energii

8 energii -> generator 3 2 energii
*/
// indicii pentru en o sa fie cantitate de energie
// valorile din en o sa fie costuri