Pagini recente » Cod sursa (job #2829664) | Cod sursa (job #544020) | Cod sursa (job #156791) | Istoria paginii runda/hgfdg | Cod sursa (job #2867609)
#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 kiir()
{
cout<<endl;
for(int i=1;i<=g;i++)
{
cout<<elozo[i]<<' ';
}
cout<<endl;
for(int i=1;i<=g;i++)
{
cout<<aktualis[i]<<' ';
}
cout<<endl;
}
void rucsac()
{
int index;
for(int i=0;i<=g;i++)
{
elozo[i] = 0;
aktualis[i] = 0;
}
elozo[0] = 1;
aktualis[0] = 1;
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)
{
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;
}