Pagini recente » Cod sursa (job #973821) | Cod sursa (job #491151) | Cod sursa (job #1490295) | Cod sursa (job #2029100) | Cod sursa (job #1138348)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n, g, w[5005], p[10005], din[2][10005];
void read()
{
fin >> n >> g;
for(int i = 1; i <= n; ++i)
fin >> w[i] >> p[i];
fin.close();
}
void debug()
{
for(int i = 1; i <= n; ++i)
{
for(int cw = 0; cw <= g; ++cw)
cout << din[i][cw] << ' ';
cout << '\n';
}
}
void dinamica()
{
int l = 0;
for(int i = 1; i <= n; ++i, l=1-l)
for(int cw = 0; cw <= g; ++cw)
{
din[l][cw] = din[1-l][cw];
if(w[i] <= cw)
din[l][cw] = max(din[l][cw], din[1-l][cw-w[i]] + p[i]);
}
fout << din[1-l][g];
fout.close();
}
int main()
{
read();
dinamica();
//debug();
return 0;
}