Pagini recente » Cod sursa (job #2785108) | Cod sursa (job #1184629) | Cod sursa (job #671958) | Cod sursa (job #1507612) | Cod sursa (job #649475)
Cod sursa(job #649475)
#include <fstream>
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
struct obiect {
int g, p;
}items[5001];
int n,g,p[10002];
inline int max (int a,int b){
return a > b ? a : b;
}
void citire () {
in >> n >> g;
for (int i = 1; i <= g; ++i) {
p[i] = -1;
}
p[0]=0;
}
void pd () {
int e;
for (int i = 1; i <= n; ++i) {
in >> items[i].g >> items[i].p;
for (int j = g; j >= 0; --j) {
if (p[j] == -1){
continue;
}
e = j + items[i].g;
if (e > g) {
continue;
}
if (p[e] < p[j] + items[i].p){
p[e]=p[j] + items[i].p;
}
}
}
}
void afisare(){
int max = -1;
for (int i = g; i >= 0; --i) {
if (p[i] >max){
max = p[i];
}
}
out<<max;
}
int main () {
citire ();
pd();
afisare();
return 0;
}