1st question




#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



3rd question


