Cod sursa(job #604954)

Utilizator CristibaluCristi B Cristibalu Data 26 iulie 2011 11:17:08
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include<fstream>

using namespace std;

#define Infinit 1000000000

int g,w,eg[1002],cg[1002],costmin[1002][5002];

int min(int x,int y)
{
    if (x<y) return x;
        else return y;  
}
      
int main(void)
{      
    ifstream fin("energii.in");
    ofstream fout("energii.out");
    fin >> g; fin >> w;
    for (int i=1;i<=g;i++)
    {
        fin>>eg[i]; fin>>cg[i];
    }
     fin.close();
     for(int i=0;i<=g;i++)
        for(int j=0;j<=w;j++)
           costmin[i][j]=Infinit; 
     
     for(int i=1;i<=g;i++)     
        for(int j=1;j<=w;j++)
        {
           if(eg[i]<=j) 
             costmin[i][j]=min(costmin[i-1][j],costmin[i-1][j-eg[i]]+cg[i]);
           else
             costmin[i][j]=min(costmin[i-1][j],cg[i]);           
        }   
            
         if (costmin[g][w]==Infinit)fout<<"-1";
         else fout<<costmin[g][w];         
     fout.close(); 
     return 0;
}