Cod sursa(job #2243271)

Utilizator vlad.ulmeanu30Ulmeanu Vlad vlad.ulmeanu30 Data 20 septembrie 2018 11:05:14
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <fstream>
#define maxn 1000
#define maxx 5000

using namespace std;

typedef struct
{
  int val, cst;
}gen;

gen v[maxn+5];
int dp[maxx+5];

int main ()
{
  int n, x;

  ifstream fin ( "energii.in" );
  ofstream fout ( "energii.out" );

  fin >> n >> x;

  int i;

  for ( i = 0; i < n; i++ )
    fin >> v[i].val >> v[i].cst;

  for ( i = 0; i <= x; i++ )
    dp[i] = maxx*maxn+1;

  int j, newx;

  for ( i = 0; i < n; i++ )
  {
    if ( dp[v[i].val] > v[i].cst )
      dp[v[i].val] = v[i].cst;

    for ( j = x - 1; j >= 0; j-- )
    {
      newx = min ( x, j + v[i].val );
      //printf ( "i %d newx %d dp[newx] %d dp[j] %d v[i].cst %d\n", i, newx, dp[newx], dp[j], v[i].cst );
      if ( dp[newx] > dp[j] + v[i].cst )
        dp[newx] = dp[j] + v[i].cst;
    }
  }

  fout << dp[x];

  fin.close ();
  fout.close ();

  return 0;
}