Cod sursa(job #2972690)

Utilizator AndreiBadAndrei Badulescu AndreiBad Data 30 ianuarie 2023 09:20:06
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.04 kb
//
//  main.cpp
//  Energii (infoarena)
//
//  Created by Andrei Bădulescu on 25.01.23.
//

//#include <iostream>
#include <fstream>

using namespace std;

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

const int maxValue = 1e9;
const int P = 10000;
const int N = 1000;

struct item {
    int power, cost;
};

item items[N + 1];
int costs[P + 1];
int required, n;

int main() {
    cin >> n >> required;

    for (auto i = 1; i <= n; i++) {
        cin >> items[i].power >> items[i].cost;
    }

    for (auto i = 1; i <= P; i++) {
        costs[i] = maxValue;
    }

    for (auto i = 1; i <= n; i++) {
        for (auto j = required; j >= 0; j--) {
            if (costs[j] != maxValue) {
                costs[j + items[i].power] = min(costs[j + items[i].power], costs[j] + items[i].cost);
            }
        }
    }

    int result = maxValue;

    for (auto i = P; i >= required; i--) {
        result = min(costs[i], result);
    }

    if (result == maxValue) {
        cout << -1;
    } else {
        cout << result;
    }

    return 0;
}