Pagini recente » Cod sursa (job #2902778) | Cod sursa (job #1974112) | Cod sursa (job #1432065) | Cod sursa (job #3157463) | Cod sursa (job #3255315)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int par[10001]={0},impar[10001];
int main()
{
int NrObiecte,GreutateMax;
fin>>NrObiecte>>GreutateMax;
for(int i=1;i<=NrObiecte;i++)
{
int GreutateOb,PretOb;
fin>>GreutateOb>>PretOb;
if(i%2)
{
for(int i=0;i<GreutateOb;i++)
{
impar[i]=par[i];
}
for(int i=GreutateOb;i<=GreutateMax;i++)
{
if(par[i-GreutateOb]+PretOb>par[i])
{
impar[i]=par[i-GreutateOb]+PretOb;
}
else
{
impar[i]=par[i];
}
}
}
else
{
for(int i=0;i<GreutateOb;i++)
{
par[i]=impar[i];
}
for(int i=GreutateOb;i<=GreutateMax;i++)
{
if(impar[i-GreutateOb]+PretOb>impar[i])
{
par[i]=impar[i-GreutateOb]+PretOb;
}
else
{
par[i]=impar[i];
}
}
}
}
if(NrObiecte%2)
{
fout<<impar[GreutateMax];
}
else
{
fout<<par[GreutateMax];
}
return 0;
}