Pagini recente » tema | Cod sursa (job #2526015) | Cod sursa (job #882250) | Cod sursa (job #1842186) | Cod sursa (job #2323357)
#include <iostream>
#include <fstream>
using namespace std;
struct obiecte
{
int w;
int p;
};
int main()
{
ifstream f("rucsac.in");
ofstream g("rucsac.out");
int n,gmax;
f>>n>>gmax;
obiecte *o;
o=new obiecte[n+1];
for(int i=1;i<=n;i++)
f>>o[i].w>>o[i].p;
int **dp;
dp=new int*[n+1];
for(int i=0;i<=n;i++)
dp[i]=new int[gmax+1];
for(int i=0;i<=n;i++)
for(int j=0;j<=gmax;j++)
dp[i][j]=0;
int x,y;
for(int i=1;i<=n;i++)
for(int j=1;j<=gmax;j++)
{
if(j==1)
dp[i][j]=0;
else
{
x=dp[i-1][j];
if(j-o[i].w>=0)
y=dp[i-1][j-o[i].w]+o[i].p;
else
y=0;
dp[i][j]=max(x,y);
}
}
g<<dp[n][gmax];
return 0;
}