Pagini recente » Cod sursa (job #1271107) | Cod sursa (job #1559433) | Cod sursa (job #836379) | Cod sursa (job #2768401) | Cod sursa (job #1013545)
# include <cstdio>
# include <iostream>
using namespace std;
# define inf 3000000
int E[1002], C[1002], Ct[15002];
int i, j, n, Wt, Max, sol;
int main()
{
freopen("energii.in", "r", stdin);
freopen("energii.out", "w", stdout);
scanf("%d%d", &n, &Wt);
//initializam costul minim
for (i = 1; i <= n; ++i)
{
scanf("%d%d", &E[i], &C[i]);
Max = max(Max, E[i]);
}
for (i = 1; i <= Wt + Max; ++i)
Ct[i] = inf;
// Ct[j] = costul minim necesar pentru a da o energie >=j,
//folosind primele i generatoare
for (i = 1; i <= n; ++i)
for (j = Wt; j >= 0; --j)
if (Ct[j + E[i]] > Ct[j] + C[i])
Ct[j + E[i]] = Ct[j] + C[i];
sol = inf;
for (i = Wt; i <= Wt + Max; ++i)
if (Ct[i] < sol) sol = Ct[i];
if (sol == inf) printf("-1");
else printf("%d", sol);
return 0;
}