Pagini recente » Cod sursa (job #1513112) | Cod sursa (job #1603584) | Cod sursa (job #192452) | Cod sursa (job #1823769) | Cod sursa (job #1714978)
#include <iostream>
#include <fstream>
#include <map>
#include <vector>
#include <list>
#include <iterator>
#include <queue>
#include <algorithm>
#include <tuple>
#define greutate first
#define profit second
#define maxim(a, b) (a > b ? a : b)
using namespace std;
ifstream in ("rucsac.in");
ofstream out ("rucsac.out");
int main(){
int N, G;
in >> N >> G;
vector<pair<int, int>> obiecte(N);
vector<int> capacity(G+1);
for( auto &obiect : obiecte){
in >> obiect.greutate >> obiect.profit;
}
for(auto &obiect : obiecte){
for(int capCurenta = G; capCurenta >= obiect.greutate; --capCurenta){
capacity[capCurenta] = maxim(capacity[capCurenta], capacity[capCurenta - obiect.greutate] + obiect.profit);
}
}
out << capacity[G];
return 0;
}