Pagini recente » Cod sursa (job #2209117) | Cod sursa (job #2676984) | Cod sursa (job #2324151) | Cod sursa (job #1817688) | Cod sursa (job #1105478)
#include <cstdio>
#include <vector>
using namespace std;
#define NMAX1 1003
#define NMAX2 5003
#define INF 10003
int N, W, sum_check = 0, Ans;
int Sol[NMAX1][NMAX2];
int En[NMAX1], Cost[NMAX1];
void Read_Data ()
{
scanf ("%d %d", &N, &W);
for (int i = 1; i <= N; ++i)
{
scanf ("%d %d", &En[i], &Cost[i]);
sum_check += En[i];
}
}
int Solve ()
{
if (sum_check < W)
return -1;
else
{
for (int i = 0; i <= N; ++i)
Sol[i][0] = INF;
for (int i = 1; i <= W; ++i)
Sol[0][i] = INF;
for (int i = 1; i <= N; ++i)
{
for (int j = 1; j <= W; ++j)
{
if (En[i] < j)
Sol[i][j] = min (Cost[i] + Sol[i - 1][j - En[i]], Sol[i - 1][j]);
else
Sol[i][j] = min (Cost[i], Sol[i - 1][j]);
}
}
return Sol[N][W];
}
}
int main ()
{
freopen ("energii.in", "r", stdin);
freopen ("energii.out", "w", stdout);
Read_Data ();
int Ans = Solve ();
printf ("%d\n", Ans);
return 0;
}