Cod sursa(job #3002281)

Utilizator etohirseCristi Cretu etohirse Data 14 martie 2023 17:10:39
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.64 kb
#include <fstream>
#include <iostream>
#include <vector>

using namespace std;

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

using VI = vector<int>;

int n, G;
VI w, p, dp;

void read();
void solve();

int main() {
  read();
  solve();
  return 0;
}

void solve() {
  int ans = 0;

  for (int i = 1; i <= n; ++i) {
    for (int j = G - w[i]; j >= 0; --j) {
      if (dp[j + w[i]] < dp[j] + p[i]) {
        dp[j + w[i]] = dp[j] + p[i];
        ans = max(ans, dp[j + w[i]]);
      }
    }
  }

  cout << ans << '\n';
}

void read() {
  fin >> n >> G;
  w = p = dp = VI(n + 1);

  for (int i = 1; i <= n; ++i) {
    fin >> w[i] >> p[i];
  }
}