Pagini recente » Cod sursa (job #1200998) | Cod sursa (job #2804510) | Cod sursa (job #815289) | Cod sursa (job #3177759) | Cod sursa (job #365228)
Cod sursa(job #365228)
#include<cstdio>
#include<vector>
#define maxn 10010
#define MAXX 1000000
using namespace std;
int best[MAXX] ;
bool possible[MAXX];
vector< pair < int , int > > v;
int i , j , n , m , a , b , maxs , mins = 1000000 , s;
int main ()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
for( i = 1 ; i <= MAXX ; ++i )
best[i] = 1000000 ;
scanf("%d",&n);
scanf("%d",&s);
for( i = 1 ; i <= n ; ++i ) {
scanf("%d %d",&a,&b);
v.push_back( make_pair ( a , b ) );
}
possible[0] = true;
for ( j = 0 ; j < v.size() ; ++j )
for( i = s ; i >=0 ; --i ) {
if ( possible[i] && best[i] + v[j].second < best[i + v[j].first] ) {
best[i + v[j].first] = best[i] + v[j].second , possible[ i + v[j].first] = true;
if ( i + v[j].first > maxs ) maxs = i + v[j].first;
}
}
for( i = maxs ; i >= s ; --i )
if ( best[i] < mins ) mins = best[i];
if ( mins == 1000000 ) mins = - 1;
printf("%d\n",mins);
return 0;
}