Cod sursa(job #1471447)

Utilizator mihaiadelinamihai adelina mihaiadelina Data 14 august 2015 00:14:28
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <fstream>
#include <iostream>
#define infinit 0xfffffff

using namespace std;

ifstream fin ("energii.in");
ofstream fout ("energii.out");
//dp[i][j] = costul minim cu care putem genera cantitatea de energie j luand in considerare primele i generatoare
//dp[i][j] = min (dp[i - 1][j - E[i]] + C[i], dp[i-1][j])
//dp[0][0] = 0;

int e[1001], c[1001], dp[1001][10001];

int main() {
    int g, w, i, j, minim;
    fin >> g >> w;

    for (i = 1; i <= g; i++) {
        fin >> e[i] >> c[i];
    }

    for (i = 0; i <= g; i++) {
        for (j = 1; j <= 10000; j++) {
            dp[i][j] = infinit;
        }
    }
    dp[0][0] = 0;

    for (i = 1; i <= g; i++) {
        for (j = 1; j <= 10000; j++) {
            if (j >= e[i]) {
                dp[i][j] = min(dp[i - 1][j - e[i]] + c[i], dp[i - 1][j]);
            }
            else {
                dp[i][j] = dp[i - 1][j];
            }
        }
    }

    for (j = w, minim = infinit; j <= 10000; j++) {
        minim = min(minim, dp[g][j]);
    }

    if (minim == infinit) {
        fout << -1;
    }
    else {
        fout << minim;
    }
    return 0;
}