Pagini recente » Cod sursa (job #2126049) | Cod sursa (job #2716693) | Cod sursa (job #2370421) | Cod sursa (job #2313651) | Cod sursa (job #2324960)
#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[5005][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 j = 1; j <= g; ++j){
if(w[1] > j){
d[1][j] = 0;
}
else{
d[1][j] = p[1];
}
}
for(int i = 2; i <= n; ++i)
for(int j = 1; j <= g; ++j){
if(j < w[i]){
d[i][j] = d[i - 1][j];
}
else{
d[i][j] = max(d[i - 1][j], p[i] + d[i - 1][j - w[i]]);
}
}
}
/*void afisare(){
for(int i = 1; i <= n; ++i){
for(int j = 1; j <= g; ++j)
cout << d[i][j] << " ";
cout << endl;
}
}*/
int main(){
citire();
constructie();
//afisare();
fout << d[n][g];
fin.close();
fout.close();
return 0;
}