Cod sursa(job #2695277)

Utilizator pielevladutPiele Vladut Stefan pielevladut Data 12 ianuarie 2021 12:49:58
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <bits/stdc++.h>

#define int long long

using namespace std;

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

int n, m, sum;

struct elem{
    int energie, cost;
};

elem v[1005];

int dp[5005];

int32_t main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i ++)
    {
        fin >> v[i].energie >> v[i].cost;
        sum += v[i].energie;
    }
    for(int i = 1; i <= sum; i ++)
        dp[i] = INT_MAX;

    dp[0] = 0;

    for(int i = 1; i <= n; i ++)
    {
        for(int j = sum - v[i].energie; j >= 0; j --)
        {
            dp[j + v[i].energie] = min(dp[j + v[i].energie], dp[j] + v[i].cost);
        }
    }
    int ok = 0;
    for(int i = m; i <= sum; i ++)
    {
        if(dp[i] != INT_MAX)
        {
            fout << dp[i] << '\n';
            ok = 1;
            return 0;
        }
    }
    if(ok == 0)
    {
        fout << -1 << '\n';
        return 0;
    }
}