Pagini recente » Cod sursa (job #931389) | Cod sursa (job #2061816) | Cod sursa (job #1830579) | Cod sursa (job #1197648) | Cod sursa (job #2224999)
#include <cstdio>
#include <algorithm>
#define GMAX 1005
#define WMAX 5005
#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(dp[j]>w)
}
}
}
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;
}