1st question

Untitled

Untitled

Untitled

Untitled

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int maxReward(const vector<int>& reward_1, const vector<int>& reward_2, int k) {
    int n = reward_1.size();
    vector<pair<int, int>> diffs(n);
    
    for (int i = 0; i < n; ++i) {
        diffs[i] = {reward_1[i] - reward_2[i], i};
    }
    
    sort(diffs.rbegin(), diffs.rend());
    
    int total_reward = 0;
    
    for (int i = 0; i < k; ++i) {
        total_reward += reward_1[diffs[i].second];
    }
    
    for (int i = k; i < n; ++i) {
        total_reward += reward_2[diffs[i].second];
    }
    
    return total_reward;
}

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int getMaximizedReward(const vector<int>& reward1, const vector<int>& reward2, int k) {
    int n = reward1.size();
    vector<pair<int, int>> combinedRewards(n);
    
    for (int i = 0; i < n; ++i) {
        combinedRewards[i] = {reward1[i] + reward2[i], i};
    }
    
    sort(combinedRewards.rbegin(), combinedRewards.rend());
    
    int maxReward = 0;
    
    for (int i = 0; i < k; ++i) {
        int index = combinedRewards[i].second;
        maxReward += reward1[index];
    }
    
    for (int i = k; i < n; ++i) {
        int index = combinedRewards[i].second;
        maxReward += reward2[index];
    }
    
    return maxReward;
}

int main() {
    vector<int> reward1 = {5, 4, 3, 2, 1};
    vector<int> reward2 = {1, 2, 3, 4, 5};
    int k = 3;
    cout << "Maximum combined reward points: " << getMaximizedReward(reward1, reward2, k) << endl;
    return 0;
}

2nd question

Untitled

Untitled

Untitled

3rd question

Untitled

Untitled

Untitled