Pagini recente » Cod sursa (job #1012009) | Cod sursa (job #1705455) | Cod sursa (job #537640) | Cod sursa (job #350980) | Cod sursa (job #2304213)
#include <fstream>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout ("rucsac.out");
const int N = 10005;
int v[N], g[N], n, G, dp[2][N];
void Read ()
{
int i;
fin >> n >> G;
for (i = 1; i <= n; i++)
fin >> g[i] >> v[i];
}
void DP ()
{
int i, j, M;
for (i = 1; i <= n; i++)
{
for (j = 1; j <= G; j++)
{
M = dp[0][j];
if (j >= g[i] && M < dp[0][j - g[i]] + v[i])
M = dp[0][j - g[i]] + v[i];
dp[1][j] = M;
}
for (j = 1; j <= G; j++)
dp[0][j] = dp[1][j];
}
int smax = -1;
for (int j = 1; j <= G; j++)
if (smax < dp[1][j])
smax = dp[1][j];
fout << smax;
fout.close();
}
int main()
{
Read();
DP();
return 0;
}