Cod sursa(job #2006710)

Utilizator costi2Radu Canu costi2 Data 31 iulie 2017 13:06:09
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
#include <iostream>
#include <vector>
#include <iomanip>

using namespace std;


ifstream in("energii.in");
ofstream out("energii.out");
int G , W;
int min(int a ,int b)
{
  return a <= b ? a : b;
}
int sol[1009][5009];
int main()
{
  const int Max = 10001;
  in >> G >> W;
  vector<pair<int,int> > v;
  pair<int,int> aux;

  for(int i = 0;i < G;i++)
  {
    in >> aux.first >> aux.second;
    v.push_back(aux);
  }

  for(int i = 0; i <= G ;i++)
  {
    for(int j = 0; j <= W;j++)
      sol[i][j] = Max;
  }


  for(int i = 1; i <= G; i++)
  {
    for(int j = 1; j <= W ;j++)
    {
      if(v[i-1].first >= j)
        sol[i][j] = min(v[i-1].second,sol[i-1][j]);
      else
        sol[i][j] = min(v[i-1].second + sol[i-1][j-v[i-1].first],sol[i-1][j]);
    }
  }

  if(sol[G][W] >= Max)
    out<<"-1"<<'\n';
  else
    out<<sol[G][W];

  return 0;
}