Pagini recente » Cod sursa (job #1191017) | Cod sursa (job #2275102) | Cod sursa (job #2820101) | Cod sursa (job #1622055) | Cod sursa (job #93878)
Cod sursa(job #93878)
#include <fstream>
#include <iostream>
using namespace std;
#define N_MAX 1001
#define W_MAX 5001
#define FIN "energii.in"
#define FOUT "energii.out"
ifstream fin(FIN);
ofstream fout(FOUT);
int g, w, cost[N_MAX], value[N_MAX];
void read_input() {
fin >> g >> w;
for (int i = 0; i < g; ++i){
fin >> value[i] >> cost[i];
}
}
int solve() {
int m[W_MAX];
int result = -1;
memset(m, 0xFF, sizeof(m));
m[0] = 0;
for (int i = 0; i < g; ++i) {
for (int j = w - 1; j >= 0; --j) {
if (m[j] == -1) {
continue;
}
int next = j + value[i];
if (next >= w) {
if (m[j] + cost[i] < result || result == -1) {
result = m[j] + cost[i];
}
} else if (m[next] == -1 || m[next] > m[j] + cost[i]) {
m[next] = m[j] + cost[i];
}
}
}
return result;
}
int main()
{
read_input();
fout << solve() << endl;
return 0;
}