Cod sursa(job #1712155)

Utilizator denniscrevusDennis Curti denniscrevus Data 2 iunie 2016 10:36:44
Problema Energii Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <fstream>
#define INF 9999999
#define GMAX 1005
#define WMAX 5005
#define MIN(a,b) (((a)<(b))?(a):(b))

using namespace std;

int d[GMAX][WMAX], i ,j, c[GMAX], e[GMAX], mn = 99999999, g1, w, cmax,ver;

int main()
{
    ifstream f("energii.in");
    ofstream g("energii.out");
    f>>g1>>w;

    for(i=1;i<=g1;i++)
    {
        f>>e[i];
        f>>c[i];
    }

    for(i=0;i<=g1;i++)
        for(j=0; j<=WMAX; j++)
            d[i][j] = INF;

    j=0;
    for(i=1;i<=g1;i++)
        d[i][j]=0;

    for(i=1;i<=g1;i++)
        for(j=1;j<=WMAX;j++)
        {
        d[i][j] = d[i-1][j];
        if(j>=e[i])
            d[i][j] = MIN(d[i-1][j], d[i-1][j-e[i]]+c[i]);
        }

    i=g1;
    mn=100000000;

    for(j=w;j<=WMAX-1;j++)
        if(mn>d[i][j])
        {
            mn=d[i][j];
        }

    for(i=1;i<=g1;i++)
    {
        ver=ver+e[i];
        if(mn>c[i] && e[i]>=w)
            mn=c[i];
    }
    if(ver>=w)
        g<<mn;
    else
        g<<"-1";
}