Cod sursa(job #2684468)

Utilizator cezar.balutaCezar Baluta cezar.baluta Data 13 decembrie 2020 19:26:25
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;

struct generator
{
    int energie;
    int cost;
};


int main()
{
    ifstream in("energii.in");
    ofstream out ("energii.out");
    int dp[10005];
    int cate_generatoare, cost_repornire;
    generator generatoare[1005];
    in>>cate_generatoare>>cost_repornire;
    for(int i=0; i<10000; i++)
    {
        dp[i]=9999999999;
    }
    for(int i=0; i<cate_generatoare; i++)
    {
        in>>generatoare[i].energie>>generatoare[i].cost;
        dp[generatoare[i].energie]=generatoare[i].cost;
    }
    for(int i=0; i<cate_generatoare; i++)
    {
        for(int j=10000-generatoare[i].energie; j>=0; j--)
        {
            if(dp[j]>dp[j-generatoare[i].energie]+generatoare[i].cost)
                dp[j]=dp[j-generatoare[i].energie]+generatoare[i].cost;
        }
    }
    int cost_minim=100000000;
    for(int i=cost_repornire; i<10000; i++)
    {

        cost_minim=min(cost_minim,dp[i]);
    }
    if(cost_minim==9999999999)
        out<<-1;
    else
        out<<cost_minim;

    return 0;
}