Cod sursa(job #1410089)

Utilizator radu_uniculeu sunt radu radu_unicul Data 30 martie 2015 20:53:15
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
using namespace std;
#include<fstream>
ifstream fin("energii.in");
ofstream fout("energii.out");
#define oo 1000000
int DP[1005][5005], G, W, E[1005],C[1005];
void Read()
{
    int i;
    fin>>G>>W;
    for(i=1; i<=G; i++)
    {
        fin>>E[i]>>C[i];
    }
}
void Solve()
{
    int i,j;
    for(i=0; i<=G; i++)
        for(j=0; j<=W; j++)
            DP[i][j]=oo;
    for(i=0; i<=G; i++)
        DP[i][0]=0;
    for(i=1; i<=G; i++)
    {
        for(j=1; j<=W; j++)
        {

            if(j<E[i])
            {
                DP[i][j]=min(DP[i-1][j],C[i]);
            }
            else
            {
                DP[i][j]=DP[i-1][j];
                DP[i][j]=min(DP[i][j],DP[i-1][j-E[i]]+C[i]);
            }
        }
    }
}
void Print()
{
    if(DP[G][W]!=oo)
        fout<<DP[G][W];
    else
        fout<<-1;
}
int main()
{
    Read();
    Solve();
    Print();
    return 0;
}