Cod sursa(job #2537603)

Utilizator XsoundCristian-Ioan Roman Xsound Data 3 februarie 2020 19:54:53
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 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;

           if ( _g >= 0 )
            d1[j] = max ( d0[j], d0[_g] + v[i].p );
           else d1[j] = d0[j];
       }

       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);
        }
}