Cod sursa(job #2570298)

Utilizator caesar2001Stoica Alexandru caesar2001 Data 4 martie 2020 15:59:32
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.81 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <utility>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>

using namespace std;

const int INF = 1e9 + 5;

int main() {
    ifstream in("rucsac.in");
    ofstream out("rucsac.out");

    int n, g;
    in >> n >> g;
    vector<pair<int, int>> v(n + 1); /// {greutate, profit}
    for(int i = 1; i <= n; i ++)
        in >> v[i].first >> v[i].second;

    vector<int> dp(g + 1, 0);
    dp[0] = 0;
    for(int i = 1; i <= n; i ++) {
        for(int j = g - v[i].first; j >= 0; j --)
            dp[j + v[i].first] = max(dp[j] + v[i].second, dp[j + v[i].first]);
    }
    int ans = 0;
    for(int i = 0; i <= g; i ++)
        ans = max(ans, dp[i]);
    out << ans;

    return 0;
}