Pagini recente » Cod sursa (job #2315403) | Cod sursa (job #2444191) | Cod sursa (job #519030) | Cod sursa (job #1546267) | Cod sursa (job #2148423)
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
#define Nm 5001
short N, Gmax;
short W[Nm], P[Nm], Cmax[10001];
bool Uz[10001][Nm];
int main()
{
short i, g, k;
fin>>N>>Gmax;
for(i = 1; i <= N; ++i)
fin>>W[i]>>P[i];
for(i = 1; i <= N; ++i) Cmax[i] = -1;
for(g = 1; g <= Gmax; ++g)
for(i = 1; i <= N; ++i)
if(W[i] <= g && Cmax[g - W[i]] != -1 && !Uz[g - W[i]][i])
if(Cmax[g] < Cmax[g - W[i]] + P[i])
{
Cmax[g] = Cmax[g - W[i]] + P[i];
for(k = 1; k <= N; ++k)
Uz[g][k] = Uz[g - W[i]][k];
Uz[g][i] = true;
}
fout<<Cmax[Gmax];
return 0;
}