Pagini recente » Cod sursa (job #2159133) | Cod sursa (job #3263683) | Cod sursa (job #2411961) | Cod sursa (job #2132627) | Cod sursa (job #301756)
Cod sursa(job #301756)
#include<cstdio>
#include<vector>
#define N 15001
#define G 2001
#define INF 100000001
#define min(a,b) a<b ? a:b
using namespace std;
int en[G],pr[G],w,g,pmax;
vector <int> v( N , INF );
void cit()
{
scanf("%d%d",&g,&w);
for( int i=0 ; i<g ; ++i )
{
scanf("%d%d",&en[i],&pr[i]);
pmax+=en[i];
}
}
void calc()
{
v[0]=0;
for( int i=0 ; i<g ; ++i )
for( int j=w-1 ; j>=0 ; --j )
if( v[i]!=INF )
if( v[ j + en[i] ] > v[j] + pr[i] )
v[ j + en[i] ] = v[j] + pr[i] ;
}
void scr()
{/*
for( int i=0 ; i<=pmax ; ++i )
printf("%d ",v[i]);
printf("\n");*/
int rez=INF;
for( int i=w ; i<=pmax ; ++i )
rez=min( rez , v[i] );
if( rez==INF )
printf("-1\n");
else
printf("%d\n",rez);
}
int main()
{
freopen("energii.in","r",stdin);
freopen("energii.out","w",stdout);
cit();
if(pmax<w)
{
printf("-1\n");
return 0;
}
calc();
scr();
return 0;
}