Pagini recente » Cod sursa (job #2645612) | Cod sursa (job #2198615) | Cod sursa (job #2740380) | Cod sursa (job #888478) | Cod sursa (job #1746182)
#include <fstream>
using namespace std ;
ifstream f ("energii.in") ;
ofstream g ("energii.out") ;
int G , W , EG[1002] , CG[1002] , Cost[1002][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 )
Cost[0][i] = 1e9 ;
for ( int i = 1 ; 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
Cost[i][j] = min ( Cost[i-1][j] , Cost[i-1][j-EG[i]] + CG[i] ) ;
}
}
if ( Cost[G][W] != 1e9 )
g << Cost[G][W] ;
else
g << "-1" ;
}