Cod sursa(job #602201)

Utilizator ion824Ion Ureche ion824 Data 9 iulie 2011 18:28:51
Problema Energii Scor 75
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.39 kb
#include<fstream>

using namespace std;

signed long g,w,i,j,eg[1002],cg[1002],costmin[1002][5002];

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