Cod sursa(job #213912)

Utilizator RobytzzaIonescu Robert Marius Robytzza Data 12 octombrie 2008 00:13:58
Problema Energii Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
#define inf 60000000LL
#define MAX 6003

using namespace std;

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

int g,w,cost[MAX],cant[MAX];
int viz[MAX],sum[MAX];
int minim=inf;

void citire()
{
     fin>>g>>w;
     for (int i=0;i<g;i++)
          fin>>cant[i]>>cost[i];
}

int min (int a,int b)
{
     return a>b?b:a;
}

void energ()
{
     for (int i=0;i<=MAX;i++)
          sum[i]=inf;
     viz[0]=1;
     sum[0]=0;
     for (int i=0;i<g;i++)
          for (int j=0;j<=w;j++)
               if (viz[j]==1)
               {
                    sum[j+cant[i]]=min(sum[j+cant[i]],sum[j]+cost[i]);
                    viz[j+cant[i]]=1;
                    if (j+cant[i]>=w)
                         minim=min(minim,sum[j+cant[i]]);
               }
     if (minim==inf)
          fout<<"-1\n";
     else
          fout<<minim<<"\n";
}
int main ()
{
     citire();
     energ();
     return 0;
}