Pagini recente » Cod sursa (job #1700910) | Cod sursa (job #2067301) | Rating IlincaIulian (IlincaIulian) | Cod sursa (job #734026) | Cod sursa (job #2529901)
#include <fstream>
#include <string>
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <math.h>
#include <set>
#include <map>
#include <string.h>
#include <queue>
using namespace std;
#ifdef DEBUG
string name = "data";
#else
string name = "energii";
#endif
ifstream fin(name + ".in");
ofstream fout(name + ".out");
int n, w;
#define MAXN 1005
#define INF 0x3f3f3f3f
int v[MAXN];
int c[MAXN];
int cache[5005][MAXN];
int solve(int w, int i) {
if (w <= 0) {
return 0;
}
if (i >= n) {
return INF;
}
if (cache[w][i] != 0) {
return cache[w][i];
}
int sol = min(c[i] + solve(w - v[i], i + 1), solve(w, i + 1));
cache[w][i] = sol;
return sol;
}
int main() {
fin >> n >> w;
for (int i = 0; i < n; ++i) {
fin >> v[i];
fin >> c[i];
}
int sol = solve(w, 0);
if (sol == INF) {
fout << -1;
} else {
fout << sol;
}
return 0;
}