Cod sursa(job #1469514)

Utilizator FairPlay94George Cioroiu FairPlay94 Data 8 august 2015 15:58:23
Problema Energii Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
#include <iostream>
#include <vector>
#include <set>
#include <cmath>
#include <climits>
#include <list>
#include <iomanip>
#include <cstdlib>
#include <fstream>
#include <map>
#include <algorithm>
#include <string>

using namespace std;

int main() {
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdout);

    ios_base::sync_with_stdio(false);
    cin.tie(0);

    int dp[5005], g, w, e[1005], c[1005];
    cin >> g >> w;
    for (int i = 1; i <= g; i++)
        cin >> e[i] >> c[i];
    for (int i = 1; i <= w; i++)
        dp[i] = 10000000;
    dp[0] = 0;
    for (int i = 1; i <= g; i++) {
        for (int j = w; j >= max(w - e[i], 0); j--)
            if (dp[j] + c[i] < dp[w])
                dp[w] = dp[j] + c[i];
        for (int j = max(w - e[i], 0); j >= 0; j--)
            if (dp[j] + c[i] < dp[j + e[i]])
                dp[j + e[i]] = dp[j] + c[i];
    }
    cout << dp[w];

    return 0;
}