Cod sursa(job #1331933)

Utilizator bogdanciurezubogdan ciurezu bogdanciurezu Data 1 februarie 2015 13:11:36
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#define nmax 10000

using namespace std;
ifstream f("energii.in");
ofstream g("energii.out");
int nrGen, eNec, cantE[nmax], pret[nmax], PD[10][nmax];

inline int minim(int x, int y){
    return x < y ? x : y;
}

int main()
{int i, l, j;

    f >>nrGen >>eNec;
    for(i = 1; i <= nrGen; ++i)
        f>> cantE[i]>> pret[i];
    l = 1;

    for(i = 1; i <= eNec; ++i)
        PD[l][i] = nmax;

    for(j = 1; j <= nrGen; ++j, l = 1 - l){
        for(i = eNec; i >= 0; --i){
            PD[1 - l][i] = PD[l][i];

            if(cantE[j] <= i)
                PD[1 - l][i] = minim(PD[1 - l][i], PD[l][i - cantE[j]] + pret[j]);
        }
    }
    if(PD[l][eNec] != nmax) g << PD[l][eNec]<<'\n';
        else g<< -1 <<'\n';

    return 0;
}