Cod sursa(job #2857016)

Utilizator backleventeBack Levente backlevente Data 24 februarie 2022 19:26:55
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>
#include <algorithm>
#include <vector>
using namespace std;

#define ll long long

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

vector <ll> x;
ll n, g;

void hatizsak(ll weight, ll price){
  for(ll i = g - weight; i >= 1; --i){
    if(x[i])
      x[i + weight] = max(x[i + weight], x[i] + price); 
    
    if(i == weight)
      x[i] = max(x[i], price);
  }
}

int main(){
  cin >> n >> g;

  x.resize(g + 1, 0);

  for(ll i = 1, w, p; i <= n; ++i){
    cin >> w >> p;
    hatizsak(w, p);
  }

  ll maxim = x[g];
  for(ll i = g - 1; i >= 1; --i)
    maxim = max(maxim, x[i]);

  cout << maxim;

  return 0;  
}