Cod sursa(job #2942499)

Utilizator Theodor17Pirnog Theodor Ioan Theodor17 Data 19 noiembrie 2022 19:11:55
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>

using namespace std;

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

const int NMAX = 1e3;
const int WMAX = 5e3;
const int GMAX = 1e4;
const int inf = 1e9;

struct generator{

    int energie, cost;

};

generator v[NMAX + 1];
int cost[WMAX + GMAX + 5];

int main(){

    int n = 0, w = 0;
    cin >> n >> w;

    for(int i = 0; i <= GMAX + WMAX; i++)
        cost[i] = inf;

    for(int i = 1; i <= n; i++)
        cin >> v[i].energie >> v[i].cost;

    cost[v[1].energie] = v[1].cost;

    for(int i = 2; i <= n; i++){

        for(int j = WMAX + GMAX; j >= v[i].energie; j--)
            cost[j] = min(cost[j], cost[j - v[i].energie] + v[i].cost);

        cost[v[i].energie] = min(cost[v[i].energie], v[i].cost);
    }

    int mini = inf;
    for(int i = w; i <= WMAX + GMAX; i++)
        mini = min(mini, cost[i]);

    if(mini == inf){

        cout << -1;
        return 0;

    }

    cout << mini;

    return 0;
}