Pagini recente » Cod sursa (job #2384520) | Cod sursa (job #2838159) | Cod sursa (job #453135) | Cod sursa (job #2701075) | Cod sursa (job #2110460)
#include <fstream>
#include <cstring>
#define inf 0x3f3f3f3f
#define MAXN 1010
#define MAXM 5010
using namespace std;
ifstream fin("energii.in");
ofstream fout("energii.out");
int N, E, dp[MAXN][MAXN];
struct str{
int e, c;
};
str g[MAXN];
inline void Read() {
fin >> N >> E;
for (int i = 1; i <= N; i++) {
fin >> g[i].e >> g[i].c;
}
}
inline void Dinamica() {
for (int i = 0; i <= E; i++)
dp[0][i] = inf;
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= E; j++) {
dp[i][j] = inf;
if (g[i].e >= j) {
dp[i][j] = min(dp[i - 1][j], g[i].c);
}
else {
dp[i][j] = min(dp[i - 1][j], dp[i - 1][j - g[i].e] + g[i].c);
}
}
}
if (dp[N][E] == inf)
fout << -1;
else
fout << dp[N][E];
}
int main () {
Read();
Dinamica();
fin.close(); fout.close(); return 0;
}