Cod sursa(job #1752322)

Utilizator GinguIonutGinguIonut GinguIonut Data 3 septembrie 2016 15:30:24
Problema Problema rucsacului Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include <fstream>
#define nMax 5001
#define gMax 10001

using namespace std;

ifstream fin("rucsac.in");
ofstream fout("rucsac.out");

int n, g;
int Sol[gMax];

struct obiecte
{
    int x;
    int y;
}ob[nMax];
void read()
{
    fin>>n>>g;

    for(int i=1; i<=n; i++)
    {
        fin>>ob[i].x;
        fin>>ob[i].y;
    }
}

void solve()
{
    for(int i=1; i<=g; i++)
        Sol[i]=-1;

    for(int i=1; i<=n; i++)
    {
        int weight=ob[i].x;
        int price=ob[i].y;

        for(int j=g-weight; j>=0; j--)
        {
            if(Sol[j]!=-1)
            {
                if(Sol[j]+price>Sol[j+weight])
                    Sol[j+weight]=Sol[j]+price;
            }
        }
    }
}

void write()
{
    int Max=-1;

    for(int i=0; i<=g; i++)
        Max=max(Max, Sol[i]);

    fout<<Max;
}
int main()
{
    read();
    solve();
    write();
}