Cod sursa(job #1833628)

Utilizator LizaSzabo Liza Liza Data 22 decembrie 2016 20:30:32
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <iostream>
#include <fstream>

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

const int oo=2000000000;
const int GMax = 1005;
const int WMax = 5005;

int DP[1005][5005], E[1005], C[5005], G,W;
void read()
{
    fin>>G>>W;
    for(int i=1; i<=G; ++i)
    {
        fin>>E[i]>>C[i];
    }

    for(int i=1; i<=G; ++i)
        for (int j=1; j<=W; ++j)
            DP[i][j]=oo;

   for (int i=1; i<=E[1]; ++i)
        DP[1][i]=C[1];

}

void Solve()
{
    for(int i=2; i<=G; ++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]);
        }

    }

}

int main()
{
    read();
    Solve();
    if (DP[G][W]==oo)
    {
        fout<<-1<<"\n";
    }
    else
fout<<DP[G][W]<<"\n";

    return 0;
}