Pagini recente » Cod sursa (job #1579195) | Cod sursa (job #990446) | Cod sursa (job #627607) | Cod sursa (job #1871220) | Cod sursa (job #2867961)
#include <iostream>
#include <fstream>
#include <list>
using namespace std;
ifstream be("rucsac.in");
ofstream ki("rucsac.out");
int const nMax = 100001;
int n,g;
int w[nMax],p[nMax];
int aktualis[nMax],elozo[nMax];
void masolas()
{
for(int i=0;i<=g;i++)
{
elozo[i] = aktualis[i];
}
}
void rucsac()
{
int index;
for(int i=0;i<=g;i++)
{
elozo[i] = 0;
aktualis[i] = 0;
}
elozo[w[1]] = p[1];
aktualis[w[1]] = p[1];
for(int i=2;i<=n;i++)
{
for(int j=0;j<=g;j++)
{
if(elozo[j]!=0 || j == 0)
{
index = w[i] + j;
if(index <= g)
{
if(elozo[index] < p[i] + elozo[j])
{
aktualis[index] = p[i] + elozo[j];
}
}
}
}
masolas();
}
}
int main()
{
be>>n>>g;
int a,b;
for(int i=1;i<=n;i++)
{
be>>w[i]>>p[i];
}
rucsac();
int maxi = 0;
for(int i=1;i<=g;i++)
{
if(maxi<aktualis[i])
maxi = aktualis[i];
}
cout<<maxi<<endl;
ki<<maxi<<endl;
}