Pagini recente » Cod sursa (job #2922282) | Cod sursa (job #63971) | Cod sursa (job #2102695) | Cod sursa (job #588545) | Cod sursa (job #639716)
Cod sursa(job #639716)
#include<cstdio>
const int INF = 11111 ;
int cost [ 15001 ] ;
int e [ 5001 ] , c [ 5001 ] ;
int max ( int a , int b )
{
if ( a > b )
return a;
return b ;
}
int main ( )
{
freopen ( "energii.in", "r", stdin ) ;
freopen ( "energii.out" , "w", stdout ) ;
int n , w , m = -INF , i , W ;
int j ;
scanf ( "%d%d", & n , & w ) ;
for ( i = 1 ; i <= n ; ++ i )
{
scanf ( "%d%d", & e[i] , &c[i] ) ;
//e = energie ; c= cost
m = max ( m , e[i] ) ;
}
W = m + w ;
for ( i = 1 ; i <= W ; ++ i )
cost[i]=INF;
cost[0]=0;
for ( i = 1 ; i <= w ; ++ i )
{
for ( j = w-1 ; j >= 0 ; -- j )
if ( cost[ j ] + c[i] < cost [ j + e[i] ] )
cost [ j+e[i] ] = cost[j] + c[i] ;
}
m = INF ;
for ( i = w ; i <= W ; ++ i )
if ( cost[i] < m )
m = cost[i] ;
if ( m == INF )
printf ( "-1" ) ;
else
printf ( "%d" , m ) ;
return 0 ;
}