Cod sursa(job #2121863)

Utilizator lucametehauDart Monkey lucametehau Data 4 februarie 2018 13:39:55
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.72 kb
#include <fstream>

using namespace std;

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

const int MAX_G = 1001;
const int MAX_W = 5001;
const int INF = 1000000000;

int G, W;

int E[MAX_G], cost[MAX_G];
int dp[MAX_G][MAX_W];

int main() {
  cin >> G >> W;
  for(int i = 1; i <= G; i++)
    cin >> E[i] >> cost[i];
  for(int j = 1; j <= W; j++)
    dp[0][j] = INF;
  for(int i = 1; i <= G; i++) {
    for(int j = 1; j <= W; j++) {
      dp[i][j] = INF;
      if(E[i] <= j)
        dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - E[i]] + cost[i]);
      else
        dp[i][j] = min(dp[i - 1][j], cost[i]);
    }
  }
  if(dp[G][W] == INF)
    cout << -1;
  else
    cout << dp[G][W];
  return 0;
}