Cod sursa(job #895044)

Utilizator miron_dorin95Miron Dorin miron_dorin95 Data 27 februarie 2013 09:30:15
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int n,w,e[1001],c[1001],bst[10001];
void citire()
{
    int i;
    f>>n>>w;
    for(i=1;i<=n;i++)
        f>>e[i]>>c[i];
}
void init()
{
    int i;
    for(i=1;i<=2*w;i++)
        bst[i]=-1;
}
int main()
{
    int i,j,rasp=10000001;
    citire();
    init();
    for(i=1;i<=n;i++)
    {
        for(j=w;j>0;j--)
        {
            if(bst[j]!=-1)
            {
                if(bst[j+e[i]]>bst[j]+c[i] || bst[j+e[i]]==-1)
                    bst[j+e[i]]=bst[j]+c[i];
                if(j+e[i]>=w &&rasp>bst[j+e[i]])
                    rasp=bst[j+e[i]];
            }
        }
        if(bst[e[i]]>c[i])
            bst[e[i]]=c[i];
        else
            if(bst[e[i]]==-1)
                bst[e[i]]=c[i];
        if(e[i]>=w &&rasp>bst[e[i]])
            rasp=bst[j+e[i]];
    }
    if(rasp==10000001)
        g<<-1;
    else
        g<<rasp;
    return 0;
}