Cod sursa(job #2700294)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 27 ianuarie 2021 11:02:40
Problema Energii Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <cstdio>

using namespace std;

ifstream cin ( "energii.in" );
ofstream cout ( "energii.out" );

#define MAXG 1000
#define MAXW 5000
#define INF 1000000000

int dp[MAXW + 1];

int main()
{
    int n, ans, i, j, valoare, cost;

    cin >> n >> ans;

    for ( i = 1; i <= ans; i++ )
      dp[i] = INF;

     /// dp[i] = pret min pt energie >= i

    for ( i = 0; i < n; i++ ) {
      cin >> valoare >> cost;
      /// dp[i] = min ( dp[i], dp[i - valoare] + c ) pt ans >= i >= valoare
      /// dp[i] = min ( dp[i], c ) pt 0 < i < valoare
      for ( j = ans; j >= valoare; j-- )
        dp[j] = min ( dp[j], dp[j - valoare] + cost );
      for ( j = 0; j < valoare; j++ )
        dp[j] = min ( dp[j], cost );
    }

    if ( dp[ans] != INF )
      cout << dp[ans];
    else
      cout << "-1";

    return 0;
}