Pagini recente » Cod sursa (job #1085745) | Cod sursa (job #2128509) | Cod sursa (job #2128491) | Cod sursa (job #1841675) | Cod sursa (job #2329488)
#include <fstream>
#include <iostream>
#include <algorithm>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, g, w[5005], p[5005], d[3][10005];
void citire(){
fin >> n >> g;
for(int i = 1; i <= n; ++i)
fin >> w[i] >> p[i];
}
void bubble(){
for(int i = 1; i <= n; ++i)
for(int j = i + 1; j <= n; ++j){
if(w[j] < w[i]){
swap(w[i], w[j]);
swap(p[i], p[j]);
}
}
}
void constructie(){
bubble();
for(int i = 1; i <= g; ++i){
if(i < w[1])
d[1][i] = 0;
else
d[1][i] = p[1];
}
for(int i = 2; i <= n; ++i){
for(int j = 1; j <= g; ++j){
if(j < w[i])
d[2][j] = d[1][j];
else
d[2][j] = max(d[1][j], p[i] + d[1][j - w[i]]);
}
for(int j = 1; j <= g; ++j)
d[1][j] = d[2][j];
}
}
int main(){
citire();
constructie();
fout << d[2][g];
fin.close();
fout.close();
return 0;
}