Cod sursa(job #1556710)

Utilizator PaulStighiStiegelbauer Paul-Alexandru PaulStighi Data 25 decembrie 2015 18:32:06
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.9 kb
#include<fstream>
#include<cstring>
#define NMax 1006
#define inf 123456789
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");

int G,W,Sol;
int E[NMax],P[NMax],R[4][5*NMax];
bool L1=0,L2=1;

void Read()
{
    fin>>G>>W;
    for(int i=1;i<=G;++i)
        fin>>E[i]>>P[i];
}

void Solve()
{
    for(int i=1;i<=W;++i)
        R[L1][i] = R[L2][i] = inf;

    for(int i=2;i<=G;++i)
    {
        for(int j=0;j<=W;++j)
        {
            if(E[i] <= j)
                R[L2][j] = min(R[L1][j],R[L1][j-E[i]]+P[i]);
            else
                R[L2][j] = min(R[L1][j],P[i]);
        }
        L1=1-L1;
        L2=1-L2;
    }
}

void Print()
{
    if(R[L1][W] == 0 || R[L1][W] == inf)    fout<<"-1\n";
    else fout<<R[L1][W]<<"\n";
}

int main()
{
    Read();
    Solve();
    Print();

    fin.close();
    fout.close();
    return 0;
}