Pagini recente » Borderou de evaluare (job #2779295) | Borderou de evaluare (job #1045811) | Borderou de evaluare (job #2953219) | Borderou de evaluare (job #255957) | Cod sursa (job #1007308)
#include <iostream>
#include<fstream>
using namespace std;
class rucsac
{
int n,g;
fstream in,out;
struct obiect
{
int w,p;
}*ob;
public:
rucsac(string fin,string fout)
{
in.open(fin.c_str(), ios::in);
out.open(fout.c_str(), ios::out);
}
void read()
{
in>>n>>g;
for(int i=1;i<=n;i++)
{
in>>ob[i].w>>ob[i].p;
}
}
int maximum(int a,int b)
{
if(a>b) return a;
return b;
}
void solve()
{
int v[g+1];
v[0]=0;
for(int i=1;i<=g+1;i++)
{
v[i]=-1;
}
for(int i=1;i<=n;i++)
{
for(int j=g-ob[i].w;j>=0;j--)
{
v[j+ob[i].w] = maximum(v[j+ob[i].w],v[j]+ob[i].p);
}
}
int maxim=0;
for(int i=0;i<g+1;i++)
{
if(maxim<v[i])
{
maxim=v[i];
}
}
out<<maxim;
}
};
int main()
{
rucsac X("rucsac.in","rucsac.out");
X.read();
X.solve();
return 0;
}