Pagini recente » Teoria jocurilor: numerele Sprague-Grundy | Monitorul de evaluare | Clasament conccsd | Cod sursa (job #877551) | Cod sursa (job #1602528)
#include <fstream>
using namespace std;
ifstream cin("rucsac.in");
ofstream cout("rucsac.out");
int nrObiecte;
int greutateMaxima;
int rezultat=0;
int greutateObiect[100001];
int pretObiect[100001];
int solutie[100001];
int main() {
cin>>nrObiecte>>greutateMaxima;
for(int i=1; i<=nrObiecte; i++) cin>>greutateObiect[i]>>pretObiect[i];
for(int i=1; i<=nrObiecte; i++) {
for(int j=greutateMaxima; j >= 0; j--)
if(j >= greutateObiect[i])
solutie[j] = max(solutie[j], solutie[j-greutateObiect[i]] + pretObiect[i]);
}
for(int i=greutateMaxima; i>=0; i--)
if(solutie[i] > rezultat) rezultat = solutie[i];
cout<<rezultat;
return 0;
}