Pagini recente » Cod sursa (job #2920972) | Cod sursa (job #3241728) | Cod sursa (job #1561275) | Cod sursa (job #784300) | Cod sursa (job #2225008)
#include <cstdio>
#include <algorithm>
#define GMAX 1005
#define WMAX 50005
#define NRmare 999999999
using namespace std;
int g, w, dp[WMAX];
struct gener
{
int cantit, cost;
}generator[GMAX];
void umple()
{
for(int i=1; i<=w; i++)
dp[i]=NRmare;
}
void dinamica()
{
for(int i=1; i<=g; i++)
{
for(int j=w+generator[i].cantit; j>=generator[i].cantit; j--)
{
dp[j]=min(dp[j], dp[j-generator[i].cantit]+generator[i].cost);
if(j>w)
{
dp[w]=min(dp[w], dp[j]);
}
}
}
}
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d %d", &g, &w);
for(int i=1; i<=g; i++)
{
scanf("%d %d", &generator[i].cantit, &generator[i].cost);
if(generator[i].cantit>w)
generator[i].cantit=w;
}
umple();
dinamica();
if(dp[w] == NRmare)
printf("-1");
else
printf("%d", dp[w]);
return 0;
}