Pagini recente » Cod sursa (job #1296964) | Cod sursa (job #2431079) | Cod sursa (job #1123246) | Cod sursa (job #530546) | Cod sursa (job #1097262)
#include <fstream>
using namespace std;
int g[5001];
int p[5001];
int n, Gmax;
int Pmax[2][10001];
int maxim;
void cit()
{
int i;
ifstream in("rucsac.in");
in>>n>>Gmax;
for(i=1;i<=n;i++)
in>>g[i]>>p[i];
in.close();
}
void pd()
{
int i,G;
for(G=1;G<=Gmax;G++)
{
if(g[1]<=G)
Pmax[0][G]=p[1],maxim=p[1];
}
for(i=1;i<=n;i++)
{
for(G=i;G<=Gmax;G++)
{
Pmax[1][G]=Pmax[i-1][G];
if(g[i]<=G&&p[i]+Pmax[0][G-g[i]])
Pmax[1][G]=p[i]+Pmax[0][G-g[i]];
maxim=(maxim>Pmax[1][G])?maxim:Pmax[1][G];
}
for(G=i;G<=Gmax;G++)
Pmax[0][G]=Pmax[1][G];
}
ofstream o("rucsac.out");
o<<maxim<<'\n';
o.close();
}
int main()
{
cit();
pd();
return 0;
}