Cod sursa(job #1714250)

Utilizator BrandonChris Luntraru Brandon Data 7 iunie 2016 20:42:02
Problema Problema rucsacului Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <fstream>

#define Pe pair <int, int>
#define mp make_pair
#define fi first
#define se second
using namespace std;

ifstream cin("rucsac.in");
ofstream cout("rucsac.out");

const int MaxN = 5005;

Pe v[MaxN];
int dp[MaxN];
int n, g, maxx;

int main() {
  cin >> n >> g;
  for (int i = 1; i <= n; ++i) {
    cin >> v[i].fi >> v[i].se;
  }

  for (int i = 1; i <= n; ++i) {
    for (int j = g; j >= 0; --j) {
      if ((j == 0 or dp[j]) and j <= g - v[i].fi) {
        dp[j + v[i].fi] = max(dp[j + v[i].fi], dp[j] + v[i].se);
      }
    }
  }

  for (int i = 1; i <= g; ++i) {
    maxx = max(maxx, dp[i]);
  }

  cout << maxx << '\n';
  return 0;
}