Cod sursa(job #801124)

Utilizator raulstoinStoin Raul raulstoin Data 23 octombrie 2012 16:19:30
Problema Energii Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream fout("energii.out");
int n,g,e[50005],c[50005],maxg,v[100005];
inline int minim(int a,int b)
{
    if(a && !b)
        return a;
    if(!a && b)
        return b;
    if(a<b)
        return a;
    else
        return b;
}
int main()
{
    f>>n>>g;
    int i;
    for(i=1;i<=n;i++)
        f>>e[i]>>c[i];
    for(i=1;i<=n;i++)
    {
        for(int j=1;j<=maxg;j++)
            if(v[j])
                v[j+e[i]]=minim(v[j+e[i]],v[j]+c[i]);
        maxg+=e[i];
        v[e[i]]=minim(c[i],v[e[i]]);
    }
    if(maxg<g)
        fout<<-1<<'\n';
    else
    {
        int rez=999999999;
        for(i=g;i<=maxg;i++)
            if(rez>v[i] && v[i])
                rez=v[i];
        fout<<rez<<'\n';
    }
    f.close();
    fout.close();
    return 0;
}