Pagini recente » Cod sursa (job #820436) | Cod sursa (job #1456265) | Cod sursa (job #2169524) | Cod sursa (job #1665816) | Cod sursa (job #2718521)
#include <fstream>
using namespace std;
long long G, W;
long long E[1001];
long long C[1001];
long long dp[1001][5001];
const long long Inf = 1e12;
void read() {
long long i;
ifstream f("energii.in");
f >> G >> W;
for (i = 1; i <= G; i++)
f >> E[i] >> C[i];
f.close();
}
void solve() {
long long i, j;
for (i = 0; i <= G; i++)
for (j = 1; j <= W; j++)
dp[i][j] = Inf;
for (i = 1; i <= G; i++)
for (j = 1; j <= W; j++)
if (j - E[i] >= 0)
dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - E[i]] + C[i]);
else dp[i][j] = dp[i - 1][j];
}
void output() {
ofstream g("energii.out");
if (dp[G][W] == Inf)
g << -1;
else
g << dp[G][W];
g.close();
}
int main() {
read();
solve();
output();
return 0;
}