Cod sursa(job #1693075)

Utilizator razvandRazvan Dumitru razvand Data 22 aprilie 2016 12:58:10
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <iostream>
#include <fstream>
#include <climits>
#define INF 50000004
#define G 1003
#define W 5003

using namespace std;

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

pair<int, int> v[G];
int dp[W];

int main() {

    int g,w;
    in >> g >> w;

    for(int i = 1; i <= g; i++)
        in >> v[i].first >> v[i].second;
    for(int i = 0; i <= w; i++)
        dp[i] = INF;

    for(int i = 1; i <= g; i++) {
        for(int j = w; j > v[i].first; j--)
            dp[j] = min(dp[j], dp[j-v[i].first]+v[i].second);
        for(int j = v[i].first; j >= 1; j--)
            dp[j] = min(dp[j], v[i].second);
    }

    if(dp[w] == INF) {
        out << "-1" << '\n';
    } else {
        out << dp[w] << '\n';
    }

    return 0;
}