Pagini recente » Cod sursa (job #2647524) | Cod sursa (job #1519670) | Cod sursa (job #570955) | Cod sursa (job #338561) | Cod sursa (job #301866)
Cod sursa(job #301866)
#include<cstdio>
#include<vector>
#define N 20010
#define G 5010
#define INF 1000000001
#define min(a,b) a<b ? a:b
using namespace std;
int en[G],pr[G],w,g,pmax,v[N];
void cit()
{
scanf("%d%d",&g,&w);
for( int i=0 ; i<g ; ++i )
{
scanf("%d%d",&en[i],&pr[i]);
pmax+=en[i];
}
for( int i=1 ; i<N ; ++i )
v[i]=INF;
}
void calc()
{
for( int i=0 ; i<g ; ++i )
for( int j=w-1 ; j>=0 ; --j )
if( v[j]!=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;
}