✅ The verified answer to this question is available below. Our community-reviewed solutions help you understand the material better.
#define main1 main
/** Question C1
What is output of the program?
*/
//
//equal_range; includes; set_union; set_intersection; set_difference
#include <iostream>
#include <vector>
#include <algorithm>
int main1() {
std::vector<int> a = {2, -1, 8, 7, 2, -4, 0, 6, 0, 6};
std::vector<int> b = {4, 8, 8, 8, 3, 5, 1, -3, 7};
std::ranges::sort(a);
std::ranges::sort(b);
auto sub1 = std::ranges::unique(a);
a.erase(sub1.begin(), sub1.end());
auto sub2 = std::ranges::unique(b);
b.erase(sub2.begin(), sub2.end());
auto eq = std::ranges::equal_range(a, 5);
int posL = static_cast<int>(eq.begin() - a.begin());
int posU = static_cast<int>(eq.end() - a.begin());
int found = (eq.begin() != eq.end());
bool inc = std::ranges::includes(a, b);
std::vector<int> u(a.size() + b.size());
auto itU = std::ranges::set_union(a, b, u.begin());
u.erase(itU.out, u.end());
std::vector<int> inter(std::min(a.size(), b.size()));
auto itI = std::ranges::set_intersection(a, b, inter.begin());
inter.erase(itI.out, inter.end());
std::vector<int> diff(a.size());
auto itD = std::ranges::set_difference(a, b, diff.begin());
diff.erase(itD.out, diff.end());
int su = 0, si = 0, sd = 0;
for (int x : u) su += x;
for (int x : inter) si += x;
for (int x : diff) sd += x;
std::cout << found << "|" << posL << "|" << posU << "|" << inc << "|"
<< static_cast<int>(u.size()) << "|" << su << "|"
<< static_cast<int>(inter.size()) << "|" << si << "|"
<< static_cast<int>(diff.size()) << "|" << sd;
return 0;
}