Pagini recente » Cod sursa (job #1843573) | Cod sursa (job #1870154) | Cod sursa (job #1211932) | Cod sursa (job #3163675) | Cod sursa (job #3162455)
#include <fstream>
using namespace std;
ifstream fin ("rucsac.in");
ofstream fout("rucsac.out");
int dp[100001];
int n,G,g,p,i,j;
int main()
{
fin>>n>>G;
for(i=1;i<=10000;i++)
dp[i]=-1;
for(i=1;i<=n;i++)
{
fin>>g>>p;
for(j=G-g;j>=0;j--) ///j=greutatea obtinuta anterior
if(dp[j]!=-1 && dp[j+g]<dp[j]+p)
dp[j+g]=dp[j]+p;
}
///determin maximul din dp
int maxim=-1;
for(i=1;i<=10000;i++)
if(dp[i]>maxim)
maxim=dp[i];
fout<<maxim;
return 0;
}