Cod sursa(job #412697)

Utilizator ucc_5Usurelu Catalin ucc_5 Data 5 martie 2010 21:34:17
Problema Energii Scor 5
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.8 kb
#include <fstream>
#define wmax 5005
#define gmax 1005
#define inf 32000
using namespace std;
ifstream f("energii.in");
ofstream gout("energii.out");

struct generator { int e,cost; } g[gmax];
int s[wmax],gen,w;

void citire ()
{
  f>>gen>>w;
  for (int i=1; i<=gen; i++)
    f>>g[i].e>>g[i].cost;
  f.close ();
}

int cost ()
{
  int i,j;
  for (i=1; i<=w; i++)
    s[i]=inf;
  s[0]=0;
  for (i=1; i<=gen; i++)
    for (j=0; j<=w; j++)
      if (j+g[i].e<w)
        {
          if (s[j+g[i].e]>s[j]+g[i].cost)
            s[j+g[i].e]=s[j]+g[i].cost;
        }
        else
          if (s[w]>s[j]+g[i].cost)
            s[w]=s[j]+g[i].cost;
  if (s[w]==inf) return -1;
  return s[w];
  
}







int main ()
{
  citire ();
  gout<<cost ();
  gout.close (); return 0;
}