Cod sursa(job #2839997)

Utilizator TeoRoGaming_YgVoinea Ionut-Florin TeoRoGaming_Yg Data 26 ianuarie 2022 21:00:52
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.09 kb
#include <fstream>

using namespace std;

const int N = 1000;
const int K = 5001;

int n, k, e[N], c[N], cost[K];

int main()
{
    ifstream in("energii.in");
    ofstream out("energii.out");
    in >> n >> k;
    for (int i = 0; i < n; i++)
    {
        in >> e[i] >> c[i];
    }
    ///initializarea
    for (int j = 1; j <= k; j++)
    {
        cost[j] = -1;///cost[j]=costul min necesar obtinerii energiei j (daca j<k)
        ///cost[k]=costul minim necesar obtinerii energiei CEL PUTIN k
    }
    cost[0] = 0;
    for (int i = 0; i < n; i++)
    {
        for (int j = k - 1; j >= 0; j--)
        {
            if (cost[j] != -1)///am o configuratie de generatoare cu suma energiilor j
            {
                int energia = min(k, j + e[i]);///chiar daca depasesc k, voi retine rez in cost[k]
                if (cost[energia] == -1 || cost[j] + c[i] < cost[energia])
                {
                    cost[energia] = cost[j] + c[i];
                }
            }
        }
    }
    out << cost[k];
    in.close();
    out.close();
    return 0;
}