Cod sursa(job #1007308)

Utilizator marialivia16Chiorean Maria Livia marialivia16 Data 8 octombrie 2013 18:37:53
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.15 kb
#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;
}