Pagini recente » Cod sursa (job #291145) | Cod sursa (job #2081176) | Cod sursa (job #291091) | Cod sursa (job #14114) | Cod sursa (job #1276429)
#include <cstdio>
#define Inf 1000000000
using namespace std;
FILE *fin=freopen("energii.in","r",stdin);
FILE *fout=freopen("energii.out","w",stdout);
int Best[5010], N , W;
struct{int E, C;} V[1001];
int main()
{
scanf("%d%d", &N, &W);
for(int i = 1 ; i <= N ; ++i )
scanf("%d%d", &V[i].E, &V[i].C);
for(int i = 1 ; i <= W ; ++i )
Best[i] = Inf;
for(int i = 1 ; i <= N ; ++i )
for(int j = 0 ; j <= W ; ++j )
if( Best[j] != Inf )
{
if( j + V[i].E < W )
{
if(Best[j + V[i].E] > Best[j] + V[i].C )
Best[j + V[i].E] = Best[j] + V[i].C;
}
else if( Best[W] > Best[j] + V[i].C )
Best[W] = Best[j] + V[i].C;
}
if( Best[W] == Inf )
printf("-1");
else
printf("%d", Best[W]);
return 0;
}