Cod sursa(job #1746189)

Utilizator jurjstyleJurj Andrei jurjstyle Data 22 august 2016 19:23:08
Problema Energii Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.24 kb
#include <fstream>

using namespace std ;

ifstream f ("energii.in") ;
ofstream g ("energii.out") ;

int G , W , EG[1002] , CG[1002] , Cost1[5002] , Cost2[5002] ;

int main ()
{
    f >> G >> W ;
    for ( int i = 1 ; i <= G ; ++i )
        f >> EG[i] >> CG[i] ;

//initializam initial costul minim de a obtine energia i cu 0 generatoare infinit
    for ( int i = 1 ; i <= W ; ++i )
        if ( EG[1] >= i )
            Cost1[i] = CG[1] ;
        else
            Cost1[i] = 1e9 ;

    for ( int i = 2 ; i <= G ; ++i )
    {
        for ( int j = W ; j >= 1 ; --j )
        {
         //dorim sa obtinem energia j , folosind primele i generatoare si sa avem cost minim
         //avem de ales intre costul de a obtine energia j din primele i-1 elemente si
         //costul de a obtine energia j-Eg[i] de catre primele i-1 elemente + CG[i] -costul necesar de a produce Eg[i] energie de catre al i-lea generator
         if ( EG[i] < j )
            Cost2[j] = min ( Cost1[j] , Cost1[j-EG[i]] + CG[i] ) ;
         else
            Cost2[j] = min ( Cost1[j] , CG[i] ) ;
        }
        for ( int j = 1 ; j <= W ; ++j )
            Cost1[j] = Cost2[j] ;
    }
 if ( Cost1[W] != 1e9 )
    g << Cost1[W] ;
 else
    g << "-1" ;
}