Cod sursa(job #801192)

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