Cod sursa(job #2893889)

Utilizator MortemPlaiasu Iulia-Silvia Mortem Data 26 aprilie 2022 19:32:59
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <iostream>
#include <algorithm>
#include <limits.h>
#define lol long long
using namespace std;

FILE *fin = fopen("energii.in", "r");
FILE *fout = fopen("energii.out", "w");

int eg[1005];
int cg[1005];
lol dp[5005];

int main()
{
    lol costMin = LLONG_MAX;
    int g, w;
    fscanf(fin, "%d", &g);
    fscanf(fin, "%d", &w);
    for (int i = 0; i < g; i++)
        fscanf(fin, "%d %d", &eg[i], &cg[i]);
    for (int i = 0; i < w; i++)
        dp[i] = LLONG_MAX;
    dp[0] = 0;
    for (int i = 0; i < w; i++)
    {
        for (int j = w - 1; j >= 0; j--)
        {
            if (dp[j] == LLONG_MAX)
                continue;
            if (j + eg[i] >= w)
                costMin = min(costMin, cg[i] + dp[j]);
            else
                dp[j + eg[i]] = min(dp[j + eg[i]], cg[i] + dp[j]);
        }
    }
    fprintf(fout, "%lld\n", costMin);
}