Cod sursa(job #3288218)

Utilizator MerlinTheWizardMelvin Abibula MerlinTheWizard Data 20 martie 2025 21:07:30
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<bits/stdc++.h>
#define int long long

using namespace std;

const int NMAX = 5e3 + 5, GMAX = 1e6 + 5, INF = 1e18 + 7;
int n, k, dp[GMAX], suma;
pair<int, int> v[NMAX];

int32_t main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);
    cin >> n >> k;
    for(int i = 1; i <= n; i++)
    {
        cin >> v[i].first >> v[i].second;
        suma += max(v[i].first, suma);
    }
    
    suma *= 2;
    
    for(int i = 1; i <= suma; i++)
        dp[i] = INF;
    
    for(int i = 1; i <= n; i++)
    {
        for(int j = suma; j >= v[i].first; j--)
        {
            dp[j] = min(dp[j], dp[j - v[i].first] + v[i].second);
        }
    }
    
    int min1 = INF;
    for(int i = suma; i >= k; i--)
    {
        min1 = min(min1, dp[i]);
    }
    
    if(dp[k] == INF)
        cout<< "-1";
    else
        cout << min1;
}