Pagini recente » Cod sursa (job #1467885) | Cod sursa (job #1777781) | Cod sursa (job #2194298) | Cod sursa (job #3279741) | Cod sursa (job #678074)
Cod sursa(job #678074)
//rucsac O(N) memorie
#include<fstream>
#define DIM1 5001
#define DIM2 10001
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int Profit[2][DIM2];
int N, G, Sol;
int W[DIM1], P[DIM1];
int main()
{
in >> N >> G;
for(int i = 1; i <= N; i++)
in >> W[i] >> P[i];
int L = 1;
for(int i = 1; i <= N; i++, L = 1 - L)
for(int j = 1; j <= G; j++)
{
Profit[L][j] = Profit[1-L][j]; //nu punem prima data obiectul curent
if( W[i] <= j )
Profit[L][j] = max(Profit[L][j], Profit[1-L][j-W[i]] + P[i] ); // numai in cazul in care maximizez profitul
}
Sol = Profit[1-L][G];
out << Sol;
return 0;
}