Cod sursa(job #3204009)

Utilizator not_anduAndu Scheusan not_andu Data 15 februarie 2024 12:46:19
Problema Energii Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <bits/stdc++.h>

using namespace std;

#define INFILE "energii.in"
#define OUTFILE "energii.out"

typedef long long ll;

struct Generator {
    ll energy;
    ll price;
};

const int ENERGY_MAX = 15e3 + 5;
const int INF = 1e9;

ll dp[ENERGY_MAX];

void solve(){

    int n, target; cin >> n >> target;
    vector<Generator> v(n);

    for(int i = 0; i < n; ++i){
        cin >> v[i].energy >> v[i].price;
    }

    dp[0] = 0;
    for(int i = 1; i <= target; ++i) dp[i] = INF;

    for(int i = 0; i < n; ++i){
        for(int energy = target - 1; energy >= 0; --energy){
            if(dp[energy] != INF){
                int aux = energy + v[i].energy;
                dp[aux] = min(dp[aux], dp[energy] + v[i].price);
            }
        }
    }

    cout << (dp[target] == INF ? -1 : dp[target]) << '\n';

}

int main(){
    ios_base::sync_with_stdio(false);
    freopen(INFILE, "r", stdin);
    freopen(OUTFILE, "w", stdout);
    cin.tie(0), cout.tie(0);
    solve();
    return 0;
}