Pagini recente » Sedinta 2009-03-02 | Cod sursa (job #1187002) | Cod sursa (job #3150899) | Cod sursa (job #446679) | Cod sursa (job #2760045)
#include <fstream>
using namespace std;
ifstream in("rucsac.in");
ofstream out("rucsac.out");
static int p[5002],profit[5002],g[5002];
int main() {
int n,k;
in>>n>>k;
for(int i=0;i<n;i++) {
in >> g[i];
in>>p[i];
}
for(int j=1;j<=k;j++)
profit[j]=-1;
profit[0]=0;
for(int i=0;i<n;i++)
{
for(int j=k-g[i];j>=0;j--)
{
if(profit[j]!=-1 && profit[j]+p[i]>profit[j+g[i]])
{
profit[j+g[i]]=profit[j]+p[i];
}
}
}
int rasp;
for(int j=1;j<=k;j++)
rasp=max(rasp,profit[j]);
out<<rasp;
return 0;
}