Cod sursa(job #2956444)

Utilizator Rodik_RodyRodica Vasilescu Rodik_Rody Data 19 decembrie 2022 16:02:18
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.11 kb
#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string>
#include <vector>
#include <algorithm>
#include <map>
#include <set>
#include <queue>
#include <list>
#include <regex>
#include <sstream>
#include <numeric>
#include <bitset>

using namespace std;

int Run(vector<int> greutate, vector<int> castig, int greutateaMaxima) {

  vector<int> dp(greutateaMaxima + 1, 0);
  vector<int> dp2(greutateaMaxima + 1, 0);

  for (int i = 0; i < greutate.size(); i++)
  {
    for (int j = 0; j <= greutateaMaxima; j++)
    {
      if (greutate[i] <= j)
      {
        dp2[j] = max(dp[j], dp[j - greutate[i]] + castig[i]);
      }
    }
    dp = dp2;
  }

  return dp[greutateaMaxima];
}

int main()
{
  freopen("rucsac.in", "r", stdin);
  freopen("rucsac.out", "w", stdout);

  int n, greutateaMaxima;
  cin >> n >> greutateaMaxima;

  vector<int>greutate;
  vector<int>castig;

  int g, c;
  while (cin >> g >> c)
  {
    greutate.push_back(g);
    castig.push_back(c);
  }

  cout << Run(greutate, castig, greutateaMaxima);
  return 0;
}