Cod sursa(job #3277492)

Utilizator jumaracosminJumara Cosmin-Mihai jumaracosmin Data 16 februarie 2025 13:42:28
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <bits/stdc++.h>

std::ifstream fin("energii.in");
std::ofstream fout("energii.out");

const int SIZE = 1e3 + 5;
const int MAXWEIGHT = 1e4;
const int INF = 1e9;

int n, W;
int weight[SIZE], energy[SIZE];
int ans;

int64_t max(std::vector<int64_t> v){ return *std::max_element(v.begin(), v.end()); }
int64_t min(std::vector<int64_t> v){ return *std::min_element(v.begin(), v.end()); }

int main() 
{
    fin >> n >> W;
    for(int i = 1; i <= n; ++i)
        fin >> energy[i] >> weight[i];

    std::vector<int> dp(MAXWEIGHT + 5, INF);
    dp[0] = 0;
    for(int i = 1; i <= n; ++i)
        for(int j = MAXWEIGHT - energy[i]; j >= 0; --j)
            dp[j + energy[i]] = std::min(dp[j + energy[i]], dp[j] + weight[i]);

    ans = INF;
    for(int i = W; i <= MAXWEIGHT; ++i)
        ans = std::min(ans, dp[i]);

    fout << (ans == INF? -1 : ans);

    return 0;
}