Pagini recente » Cod sursa (job #3293592) | Cod sursa (job #1016140) | Cod sursa (job #2697170) | Cod sursa (job #2689818) | Cod sursa (job #1244387)
#include <iostream>
#include <fstream>
using namespace std;
#define maxn 100000
int n, din[maxn], g[maxn], p[maxn], gmax;
int solve() {
din[0] = 1;
int last = 0;
for (int i = 1; i <= n; i++) {
for (int j = last; j >= 0 ; j--) {
if (din[j] > 0) {
if ( j + g[i] <= gmax) {
din[j + g[i]] = max(din[j + g[i]], din[j] + p[i]);
last = max(last, j + g[i]);
}
}
}
}
int sol = 0;
for (int i = 1; i <= last; i ++) {
sol = max(sol, din[i]);
}
return sol - 1;
}
void afisare(int sol) {
ofstream g("rucsac.in");
g << sol;
g.close();
}
void citire() {
ifstream f("rucsac.in");
f >> n >> gmax;
for (int i = 1; i <=n ;i++) {
f >> g[i] >> p[i];
}
f.close();
}
int main()
{
citire();
afisare(solve());
return 0;
}