Cod sursa(job #844801)

Utilizator andreea29Iorga Andreea andreea29 Data 29 decembrie 2012 20:30:30
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>

#define Nmax 10010
#define INF 0x3f3f3f3f

using namespace std;

int g, w, minim, best[Nmax], EG, CG;

int main()
{
    ifstream f ("energii.in");
    ofstream h ("energii.out");
    for (int i = 1; i < Nmax; ++i)
    {
        best[i] = INF;
    }
    f >> g >> w;
    minim = INF;

    for (int i = 1; i <= g; ++i)
    {
        f >> EG >> CG;
        for (int j = Nmax - 1; j >= EG; --j)
        {
            if (best[j - EG] + CG < best[j])
            {
                best[j] = best[j - EG] + CG;
            }
            if (j > w && best[j] < best[w] && best[j] < minim)
            {
                minim = best[j];
            }
        }
    }
    if (best[w] == INF && minim == INF)
    {
        h << "-1\n";
    }
    else
    {
        if (best[w] < minim)
            h << best[w] << '\n';
        else
            h << minim << '\n';
    }
    return 0;
}