Cod sursa(job #3354253)

Utilizator Razvan25555Razvan Razvan25555 Data 17 mai 2026 00:53:53
Problema Problema rucsacului Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.19 kb
#include <iostream>
#include <vector>
using namespace std;

int main() {
    int weight, n;
    cin >> n >> weight;

    vector<int> w(n), value(n);

    for (int i = 0; i < n; i++) {
        cin >> w[i] >> value[i];
    }

    for (int i = 0; i < n - 1; i++) {
        for (int j = i + 1; j < n ; j++) {
            if (value[i] < value[j]) {
                int tmp = value[j];
                value[j] = value[i];
                value[i] = tmp;

                int tmp2 = w[j];
                w[j] = w[i];
                w[i] = tmp2;
            }

            if (value[i] == value[j]) {
                if (w[i] > w[j]) {
                    int tmp = value[j];
                    value[j] = value[i];
                    value[i] = tmp;

                    int tmp2 = w[j];
                    w[j] = w[i];
                    w[i] = tmp2;
                }
            }
        }
    }

    int backpack_weight = 0, sum = 0;
    vector<int> dp(n);
    for (int i = 0; i < n; i++) {
        if (backpack_weight + w[i] <= weight) {
            sum += value[i];
            backpack_weight += w[i];
        }
    }

    cout << sum << "\n";
    return 0;
}