Pagini recente » Cod sursa (job #182583) | Cod sursa (job #1734614) | Cod sursa (job #2083448) | Cod sursa (job #481085) | Cod sursa (job #2240239)
#include <cstdio>
#include <algorithm>
FILE *fin = freopen("energii.in","r",stdin); FILE *fout = freopen("energii.out","w",stdout);
static const int NMAX = 1005;
static const int INF = 1e9;
/* ---------- Data ----------- */
int energii[NMAX], cost[NMAX], w, g, dp[NMAX];
/* ---------- Data ----------- */
// dp = costul minim pentru a face i energie
void ReadInput()
{
scanf("%d%d",&g,&w);
for(int i = 1; i<= g; ++i)
{
scanf("%d%d",&energii[i],&cost[i]);
}
}
void Solve()
{
for(int i= 1; i<= w; ++i)
{
dp[i] = INF;
}
for(int i = 1; i<= g; ++i)
{
for(int k = w; k >= 0; k--)
{
if(dp[k] != INF)
{
if(k + energii[i] >= w)
{
dp[w] = std::min(dp[w],dp[k] + cost[i]);
}
else
{
dp[k+energii[i]] = std::min(dp[k+energii[i]], dp[k] + cost[i]);
}
}
}
}
}
void PrintResult()
{
if(dp[w] == INF)
printf("-1");
else
printf("%d",dp[w]);
}
int main()
{
ReadInput();
Solve();
PrintResult();
return 0;
}