Cod sursa(job #2905125)

Utilizator TudorMihaescuTudor Mihaescu TudorMihaescu Data 19 mai 2022 18:42:00
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <iostream>
#include <fstream>

using namespace std;

#define N1 1010
#define N2 5010
#define INF 1 << 30

ifstream f1("energii.in");
ofstream f2("energii.out");

int d[N1][N2];
int cost[N1];
int energie[N1];
int G, W;

int main()
{
    f1 >> G >> W;
    for (int i = 1; i <= G; i++)
    {
        f1 >> energie[i] >> cost[i];
    }
    for (int i = 0; i <= G; i++)
    {
        for (int j = 0; j <= W; j++)
        {
            if (j == 0)
                d[i][j] = 0;
            else
                d[i][j] = INF;
        }
    }
    // luam in considerare gen curent sau nu il luam si le folosim pe cele de pana acum
    //
    for (int i = 1; i <= G; i++)
    {
        for (int j = 1; j <= W; j++)
        {
            d[i][j] = d[i-1][j]; // nu folosim generatorul curent
            if(energie[i] >= j){
                d[i][j] = min(d[i][j], cost[i]);
            }
            else{
                d[i][j] = min(d[i][j], cost[i] + d[i-1][j - energie[i]]);
            }
        }
    }

    if(d[G][W] == INF){
        f2 << -1;
    }
    else 
    f2 << d[G][W];
    return 0;
}