Cod sursa(job #2699307)

Utilizator AlexNicuNicu Alexandru AlexNicu Data 24 ianuarie 2021 09:21:03
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>
#include <cstdio>
using namespace std;
ifstream cin ( "rucsac.in" );
ofstream cout ( "rucsac.out" );
#define MAXG 10000
#define MAXN 5000
int dp[2][MAXG + 1], valoare[MAXN], greutate[MAXN];
int main()
{
    int i, n, g, j;
    cin >> n >> g;
    for ( i = 0; i < n; i++ ) {
       cin >> greutate[i] >> valoare[i];
    }
    for ( i = 0; i < n; i++ ) {
      for ( j = 0; j <= g; j++ ) {
        dp[i % 2][j] = dp[(i - 1 + 2) % 2][j];
        /// daca putem pune obiectul i
        if ( greutate[i] <= j )
          dp[i % 2][j] = max ( dp[i % 2][j], dp[(i - 1 + 2) % 2][j - greutate[i]] + valoare[i] );
      }
    }
    cout << dp[(n - 1) % 2][g];
    return 0;
}