Pagini recente » Cod sursa (job #3270801) | Cod sursa (job #3137873) | Cod sursa (job #2609167) | Cod sursa (job #623962) | Cod sursa (job #681603)
Cod sursa(job #681603)
#include <fstream>
#include <vector>
int main()
{
std::ifstream in("rucsac.in");
std::ofstream out("rucsac.out");
int N,G; //{1 ... 5000} {1 ... 10000}
in >> N >> G;
std::vector<int> A(G + 1,INT_MIN),B(G + 1,INT_MIN);
A[0] = 0;
for(int i = 1;i <= N; ++i)
{
int w,p; // {0 ... 10000}
in >> w >> p;
for(int g = 0; g <= G; ++g)
if(A[g] != INT_MIN)
{
B[g] = std::max(B[g],A[g]); // nu iau obiectul i
if(g + w <= G)
B[g + w] = A[g] + p; //iau obiectul i
}
A = B;
}
int max = A[0];
for(int g = 1; g <= G; ++g)
{
max = std::max(max,A[g]);
}
out << max;
return 0;
}