Pagini recente » Cod sursa (job #2968748) | Cod sursa (job #1703133) | Cod sursa (job #850682) | Cod sursa (job #626707) | Cod sursa (job #2935336)
#include <bits/stdc++.h>
using namespace std;
#define GMAX 1005
#define WMAX 5005
#define INF 0x3f3f3f3f
struct {
int e, c;
} v[GMAX];
int g, w, best = INF, dp[GMAX][WMAX];
int main() {
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
int g, w;
scanf("%d%d", &g, &w);
for (int i = 1; i <= g; ++i)
scanf("%d%d", &v[i].e, &v[i].c);
memset(dp, 0x3f, sizeof(dp));
dp[0][0] = 0;
for (int i = 0; i <= g; ++i)
for (int j = 0; j <= w; ++j) {
dp[i + 1][j] = min(dp[i + 1][j], dp[i][j]);
const int next_j = min(j + v[i].e, w);
dp[i + 1][next_j] = min(dp[i + 1][next_j], dp[i][j] + v[i].c);
}
for (int i = 1; i <= g + 1; ++i)
best = min(best, dp[i][w]);
printf("%d\n", best == INF ? -1 : best);
}