Cod sursa(job #1825821)

Utilizator ArambasaVlad Arambasa Arambasa Data 9 decembrie 2016 18:37:15
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
using namespace std;

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

const int oo = 2000000000;
int N,W;
int E[1005],C[1005];
int DP[1005][5005];

void Read()
{
  fin>>N>>W;

  for(int i = 1; i <= N; ++i)
    fin>>E[i]>>C[i];
}

void Solve()
{
  for(int i = 0; i <= N; ++i)
      for(int j = 0; j <= W; ++j)
          DP[i][j] = oo;

  for(int i = 1; i <= N; ++i)
    {
      for(int j = 1; j <= W; ++j)
        {
          DP[i][j] = DP[i-1][j];
          if(j - E[i] > 0)
            DP[i][j] = min(DP[i][j],DP[i-1][j-E[i]] + C[i]);
          else
            DP[i][j] = min(DP[i][j],C[i]);
        }
    }
}

void Print()
{
  if(DP[N][W] == oo)
      DP[N][W] = -1;

  fout << DP[N][W]<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();
    return 0;
}