Cod sursa(job #2537606)

Utilizator XsoundCristian-Ioan Roman Xsound Data 3 februarie 2020 19:57:28
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.85 kb
#include <bits/stdc++.h>
#define Nmax 5005
#define Gmax 10005
using namespace std;
ifstream fin ( "rucsac.in" );
ofstream fout ( "rucsac.out" );

struct obiect
{
    int g, p;
};

void read ( );
void solve ( );

vector < obiect > v;

int d0[Gmax], d1[Gmax];
int n, g;

int main ( )
{
    read ( );

    solve ( );
}

void solve ( )
{
    int lng = v.size(), _g;

    for ( int i = 0; i < lng; i++ )
    {
        for ( int j = 1; j <= g; j++ )
        {
            _g = j - v[i].g;
            d1[j] = d0[j];
            if ( _g >= 0 )
                d1[j] = max ( d0[j], d0[_g] + v[i].p );

        }

        swap ( d0, d1 );
    }

    fout << d0[g];
}

void read ( )
{
    obiect x;

    fin >> n >> g;

    for ( int i = 1; i <= n; i++ )
    {
        fin >> x.g >> x.p;

        v.push_back(x);
    }
}