Pagini recente » Cod sursa (job #1867201) | Cod sursa (job #2065954) | Cod sursa (job #1063467) | Cod sursa (job #234612) | Cod sursa (job #1059353)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
struct obiect
{
int g, p;
};
obiect v[5001];
int profit[10001];
int main()
{
int k,i,j,n,max=0;
in>>n>>k;
for(i=1;i<=n;i++)
in>>v[i].g>>v[i].p;
for(i=1;i<n;i++)
profit[i]=-1;
profit[0]=0;
for(i=1;i<=n;i++)
for(j=k-v[i].g ; j>=0 ; j--)
if(profit[j] != -1 && profit[j]+v[i].p > profit[j+v[i].g])
profit[j+v[i].g] = profit[j] + v[i].p;
for(i=1;i<=k;i++)
if(profit[i]>max)
max = profit[i];
out << max << "\n";
return 0;
}