Cod sursa(job #502741)

Utilizator mraresMardare Rares mrares Data 20 noiembrie 2010 12:13:17
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define inf 1000000

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

long v[inf], max_, i, j;

int main()
{
    int nr, w, e, c;

    f>>nr>>w;
    //v[0]=1;

    for(i=1;i<=w;++i) v[i]=inf;

    for(i=1;i<=nr;++i)
    {
        f>>e>>c;
        for(j=max_;j>=0;--j)
        {
            if(v[j]!=inf)
            {
                if(j+e<=w)
                {
                    if(v[j]+c<v[j+e])
                    {
                        v[j+e]=v[j]+c;
                        if(j+e>max_) max_=j+e;
                    }
                }
                else
                if(v[j]+c<v[w])
                {
                    v[w]=v[j]+c;
                    max_=w;
                }
            }
        }
    }

    if(v[w]!=inf)
        g<<v[w];
    else
        g<<"-1";
    return 0;
}