#include <print>
#include <vector>
#include <string>
#include <algorithm>

using namespace std::string_literals;

// Handballspieler
std::vector<std::string> handball
{
    "Franz Mueller"s, "Gustav Maier"s, "Uwe Lehmann"s,
    "Adrian Schmid"s, "Sabine Krause"s, "Gisela Schmid"s
};
// Fussballspieler
std::vector<std::string> fussball
{
    "Adrian Schmid"s,"Xaver Bauer"s, "Klaus Maier"s,
    "Gustav Lehmann"s, "Sabine Krause"s
};

int main()
{
    // Vektoren sortieren
    std::ranges::sort(handball);
    std::ranges::sort(fussball);

    // Vektor fuer Ergebnis
    std::vector<std::string> resVect;
    // Ausgabe der Personen, die nur eine Sportart betreiben
    // (Differenzmenge)
    std::println("Personen die nur Handball oder Fussball spielen:");
    std::ranges::set_symmetric_difference(fussball, handball,
                   std::back_inserter(resVect));
    for (const auto& elem : resVect)
        std::println("{}", elem);

    // Ausgabe der Personen, die beide Sportarten betreiben
    // (Schnittmenge)
    std::println("\nPersonen die sowohl Handball wie auch Fussball spielen:");
    resVect.clear();
    std::ranges::set_intersection(fussball, handball,
                   std::back_inserter(resVect));
    for (const auto& elem : resVect)
        std::println("{}", elem);
}
