Pagini recente » Cod sursa (job #2800855) | Istoria paginii runda/oni_2010 | Istoria paginii runda/5_martie_simulare_oji_2024_clasa_10/clasament | Cod sursa (job #1047737) | Cod sursa (job #1601958)
#include <iostream>
#include <fstream>
#include <utility>
#include <vector>
using namespace std;
vector<pair<int, int> > Ob;
int nrO, G, a, b, pMax;
int main()
{
freopen("rucsac.in", "rt", stdin);
freopen("rucsac.out", "wt", stdout);
scanf("%d%d", &nrO, &G);
Ob.push_back(make_pair(0, 0));
for(int i=1; i<=nrO; ++i){
scanf("%d%d", &a, &b);
Ob.push_back(make_pair(a, b));
}
vector<int>D1(G+1), D2(G+1);
for(int o=1; o<=nrO; ++o){
D1.swap(D2);
for( int g=0; g<=G; ++g){
D2[g] = D1[g];
if(Ob[o].first <= g)
D2[g] = max(D2[g], (D1[g - Ob[o].first] + Ob[o].second) );
}
}
for(int i=0; i<=G; ++i)
pMax = max(pMax, D2[i]);
cout<<pMax<<'\n';
}