Pagini recente » Cod sursa (job #958999) | Borderou de evaluare (job #743669) | Cod sursa (job #1966416) | Cod sursa (job #2595501) | Cod sursa (job #701062)
Cod sursa(job #701062)
#include <iostream>
#include <vector>
#include <algorithm>
#include <cstdio>
#define UNDEF -1
/* Un material este o pereche (greutate, valoare). */
typedef std::pair<int, int> Mobila;
int val_max(int t, std::vector<Mobila>& v)
{
/* TODO: Caclulati valoarea maxima transportabila de catre camionul de
* capacitate t. */
std::vector <int> d;
d.resize(t + 2);
d[0] = 0;
for(int i = 1; i < d.size(); i ++)
d[i] = UNDEF;
for(int i = 0; i < v.size(); i ++)
for(int j = t; j > 0; j --)
if(j - v[i].first >= 0 && d[j - v[i].first] != UNDEF)
d[j] = std::max(d[j], (d[j - v[i].first] + v[i].second));
int maxval = UNDEF;
for(int i = 1; i <=t; i ++)
maxval = std::max(maxval, d[i]);
return maxval;
}
int main()
{
/* Declaram capacitatea camionului si un vector care sa retina tipurile de
* mobila sub forma de perechi (greutate, valoare) si citim datele de intrare.
*/
int t, n;
freopen("rucsac.in", "r", stdin);
freopen("rucsac.out", "w", stdout);
std::vector<Mobila> v;
std::cin >> n;
std::cin >> t;
v.resize(n);
for(int i = 0; i < n; i ++)
std::cin >> (v[i].first) >> (v[i].second);
/* Afisam valoarea maxima transportabila de catre camion. */
std::cout << val_max(t, v) << std::endl;
return 0;
}