Cod sursa(job #2430629)

Utilizator rd211Dinucu David rd211 Data 15 iunie 2019 17:09:55
Problema Energii Scor 40
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <fstream>
#define min(A,B) (A>B)?(B):(A)
#define change(A) (A%2==1)?0:1
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
struct generator
{
    int cost;
    int energie;
};
int g,w;
generator listaItemi[1010];
int memo[1010][5010];
int calcRec(int pos,int val)
{
    if(memo[pos][val]!=0)
        return memo[pos][val];
    if(val>=w)
        return 0;
    else if(pos == 0)
    {
        return 1000000;
    }
    else
    {
        int tmp1 = calcRec(pos-1,val);
        int tmp2 = listaItemi[pos].cost + calcRec(pos-1,val+listaItemi[pos].energie);
        int res = min(tmp1,tmp2);
        memo[pos][val] = res;
        return res;
    }
}
int main()
{
    fin>>g>>w;
    for(int i = 1; i<=g; i++)
        fin>>listaItemi[i].energie>>listaItemi[i].cost;

    fout<<calcRec(g,0);
    return 0;
}