Pagini recente » Cod sursa (job #2121860) | Cod sursa (job #2818583) | Cod sursa (job #1084717) | Cod sursa (job #3227264) | Cod sursa (job #1086547)
#include <iostream>
#include <fstream>
#define N_MAX 5000
#define G_MAX 10000
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
int P[2][G_MAX], w[N_MAX], p[N_MAX], N, G;
int main()
{
in >> N >> G;
for(int i = 1; i <= N; i++)
in >> w[i] >> p[i];
/*for(int i = 1; i <= G; i++)
if(w[1] <= i) P[1][i] = p[1];*/
for(int i = 1; i <= N; i++)
{
for(int j = 0; j <= G; j++)
{
if(p[i] + P[!(i%2)][j] >= P[!(i%2)][w[i] + j]) P[i%2][w[i] + j] = p[i] + P[!(i%2)][j];
else P[i%2][w[i] + j] = P[!(i%2)][w[i] + j];
if(P[i%2][j] < P[!(i%2)][j]) P[i%2][j] = P[!(i%2)][j];
}
/*for(int j = 0; j <= G; j++)
cout << P[i%2][j] <<" ";
cout << endl;*/
}
/*for(int i = 1; i <= N; i++)
{
for(int j = 0; j <= G; j++)
out << P[i][j] << " ";
out << endl;
}*/
out << P[1][G];
return 0;
}