Pagini recente » Cod sursa (job #2390792) | Cod sursa (job #667352) | Cod sursa (job #1029001) | Cod sursa (job #2038199) | Cod sursa (job #2893900)
#include <iostream>
#include <algorithm>
#include <limits.h>
#define lol long long
using namespace std;
FILE *fin = fopen("energii.in", "r");
FILE *fout = fopen("energii.out", "w");
int eg[1005];
int cg[1005];
lol dp[5005];
int main()
{
lol costMin = LLONG_MAX;
int g, w;
fscanf(fin, "%d", &g);
fscanf(fin, "%d", &w);
for (int i = 0; i < g; i++)
fscanf(fin, "%d %d", &eg[i], &cg[i]);
for (int i = 0; i < w; i++)
dp[i] = LLONG_MAX;
dp[0] = 0;
for (int i = 0; i < g; i++)
{
for (int j = w - 1; j >= 0; j--)
{
if (dp[j] == LLONG_MAX)
continue;
if (j + eg[i] >= w)
costMin = min(costMin, cg[i] + dp[j]);
else
dp[j + eg[i]] = min(dp[j + eg[i]], cg[i] + dp[j]);
}
}
if (costMin != LLONG_MAX)
fprintf(fout, "%lld\n", costMin);
else
fprintf(fout, "-1\n");
}