Cod sursa(job #2676005)

Utilizator Edyci123Bicu Codrut Eduard Edyci123 Data 23 noiembrie 2020 09:23:47
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <bits/stdc++.h>

using namespace std;

ifstream f("energii.in");
ofstream g("energii.out");

const int INF = (1 << 28);
int n, energie;
int e[10005], dp[2][10005], cost[10005];

int main()
{

    f >> n >> energie;
    for(int i = 1; i <= n; i++)
        f >> e[i] >> cost[i];

    for(int i = 1; i <= n; i++)
        for(int j = 1; j <=energie; j++)
            if(j >= e[i])
                if(dp[(i - 1) % 2][j - e[i]] == 0 && j - e[i] != 0)
                    dp[i % 2][j] = dp[(i - 1) % 2][j];
                else if(dp[(i - 1) % 2][j] == 0)
                    dp[i % 2][j] = dp[(i - 1) % 2][j - e[i]] + cost[i];
                else
                    dp[i % 2][j] = min(dp[(i - 1) % 2][j], dp[(i - 1) % 2][j - e[i]] + cost[i]);

    if(dp[n % 2][energie] == INF)
        g << -1 ;
    else
        g << dp[n % 2][energie];
    return 0;
}