Pagini recente » Cod sursa (job #2978648) | Cod sursa (job #1960565) | Cod sursa (job #2646392) | Cod sursa (job #2365723) | Cod sursa (job #2867778)
#include <fstream>
#define NMAX 10005
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int dp[NMAX], n, i, j, g, gr, ans, last, p;
void rezolvare(){
in >> n >> g;
for(i = 1; i <= g; ++i)
dp[i] = -1;
last = 0;
for(i = 1; i <= n; ++i){
in >> gr >> p;
for(j = last; j >= 0; --j){
if(dp[j] != -1){
if(j + gr > g)
continue;
if(dp[j] + p > dp[j + gr])
dp[j + gr] = dp[j] + p;
if(j + gr > last)
last = j + gr;
}
}
}
ans = 0;
for(i = g; i >= 1; --i){
if(dp[i] > ans)
ans = dp[i];
}
out << ans;
}
int main()
{
rezolvare();
return 0;
}