Cod sursa(job #2342176)

Utilizator MateiTrandafirMatei Trandafir MateiTrandafir Data 12 februarie 2019 17:24:32
Problema Energii Scor 25
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <fstream>
#include <cstring>

constexpr int MAX_W = 5001;
constexpr int INF = 0x7FFFFF;

int cost[MAX_W];

int main() {
    int n, W, i, j, w, c, r = INF;
    std::ifstream in("energii.in");
    std::ofstream out("energii.out");
    in >> n >> W;
    std::memset(cost + 1, 0xFF, static_cast<size_t>(W - 1) * sizeof(int));
    for (i = 0; i < n; ++i) {
        in >> w >> c;
        for (j = W - 1; j >= 0; --j) {
            if (cost[j] != -1) {
                if (j + w < W) cost[j + w] = cost[j] + c;
                else if (cost[j] + c < r) r = cost[j] + c;
            }
        }
    }
    out << (r == INF ? -1 : r);
    return 0;
}