Cod sursa(job #540784)
#include<fstream>
#define inf 700000
using namespace std;
long sol[1010][5010];
long eg[1010],cg[1010];
int w,g2,i,j;
int main()
{
ifstream f("energii.in");
ofstream g("energii.out");
f>>g2;
f>>w;
for (i=1 ;i<=g2;i++)
f>>eg[i]>>cg[i];
for( i=1;i<= w;i++)
sol[0][i]=inf;
for (i=1;i<= g2;i++)
{
for( j=1;j<= w;j++)
{
if (j<eg[i])
{
if (sol[i-1][j]<cg[i])
sol[i][j]=sol[i-1][j];
else
sol[i][j]=cg[i];
}
else
if (sol[i-1][j]<sol[i-1][j-eg[i]]+cg[i])
sol[i][j]=sol[i-1][j];
else
sol[i][j]=sol[i-1][j-eg[i]]+cg[i];
}
}
if (sol[g2][w]==inf)
g<<-1<<"\n";
else
g<<sol[g2][w]<<"\n";
return 0;
}