Pagini recente » Cod sursa (job #2394639) | Cod sursa (job #2310436) | Cod sursa (job #1842825) | Cod sursa (job #2145813) | Cod sursa (job #1471447)
#include <fstream>
#include <iostream>
#define infinit 0xfffffff
using namespace std;
ifstream fin ("energii.in");
ofstream fout ("energii.out");
//dp[i][j] = costul minim cu care putem genera cantitatea de energie j luand in considerare primele i generatoare
//dp[i][j] = min (dp[i - 1][j - E[i]] + C[i], dp[i-1][j])
//dp[0][0] = 0;
int e[1001], c[1001], dp[1001][10001];
int main() {
int g, w, i, j, minim;
fin >> g >> w;
for (i = 1; i <= g; i++) {
fin >> e[i] >> c[i];
}
for (i = 0; i <= g; i++) {
for (j = 1; j <= 10000; j++) {
dp[i][j] = infinit;
}
}
dp[0][0] = 0;
for (i = 1; i <= g; i++) {
for (j = 1; j <= 10000; j++) {
if (j >= e[i]) {
dp[i][j] = min(dp[i - 1][j - e[i]] + c[i], dp[i - 1][j]);
}
else {
dp[i][j] = dp[i - 1][j];
}
}
}
for (j = w, minim = infinit; j <= 10000; j++) {
minim = min(minim, dp[g][j]);
}
if (minim == infinit) {
fout << -1;
}
else {
fout << minim;
}
return 0;
}