Pagini recente » Cod sursa (job #43801) | Cod sursa (job #2030230) | Cod sursa (job #1399752) | Cod sursa (job #1286293) | Cod sursa (job #1899057)
#include <fstream>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n, Gmax;
int W[5002], S[5002];
int dp_curent[10002], dp_urmator[10002]; //dp[i][j] - suma maxima obtinuta folosind din primele i obiecte cu greutatea j
int main()
{
f >> n >> Gmax;
for (int i = 1; i <= n; ++i)
f >> W[i] >> S[i];
for (int i = 1; i <= n; ++i)
{
for (int j = W[i]; j <= Gmax; ++j)
dp_urmator[j] = max(dp_curent[j], dp_curent[j - W[i]] + S[i]);
for (int j = 1; j <= Gmax; ++j)
dp_curent[j] = dp_urmator[j];
}
g << dp_curent[Gmax];
return 0;
}