Pagini recente » Cod sursa (job #2471016) | Cod sursa (job #2256809) | Cod sursa (job #2559548) | Cod sursa (job #1233712) | Cod sursa (job #3037738)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int main()
{
short n,gr,i,j,p,w;
f>>n>>gr;
vector<pair<short,short>> v;
vector<unsigned int>* last=new vector<unsigned int>;
vector<unsigned int>* current=new vector<unsigned int>;
v.resize(n);
last->assign(gr+1,0);
current->assign(gr+1,0);
for(i=0;i<n;i++)
{
f>>w>>p;
v.at(i)=pair<short,short>(w,p);
}
for(i=0;i<n;i++)
{
current->at(0)=0;
w=v.at(i).first;
p=v.at(i).second;
for(j=1;j<=gr;j++)
if(j>=w)
current->at(j)=max(last->at(j-w)+p,last->at(j));
else current->at(j)=last->at(j);
swap(last,current);
}
g<<last->at(gr)<<'\n';
delete current,last;
f.close();
g.close();
return 0;
}