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

// Vektor mit Tankdaten
// 1. Pairelement: gefahrene Kilomenter
// 2. Pairelement: getankter Treibstoff (ltr)
using TANKDATEN = std::pair<int,int>;
std::vector<TANKDATEN> tankdaten
    {{340,25},{450,32},{240,18},{650,44}};

// Vektor mit Verbrauchsdaten
std::vector<float> verbrauch;
int main()
{
    // Verbraeuche ltr/100km berechnen
    // Die Verbraeuche werden hier mittels einer
    // Lambda-Funktion berechnet
    std::ranges::transform(tankdaten,
                   back_inserter(verbrauch),
                   [] (const TANKDATEN& data)
                   {
                       return static_cast<float>(data.second) / 
                           static_cast<float>(data.first) * 100.0f;
                   });
    std::print("Berechnete Verbraeuche: ");
    for (auto elem : verbrauch)
        std::print("{:.02f}, ", elem);

    // Min/Max Verbrauch suchen
    // Daten mittels structured binding uebernehmen
    std::print("\nMin/Max Verbrauch: ");
    auto [vmin, vmax] = std::ranges::minmax(verbrauch);
    std::println("{:.02f}, {:.02f}\n", vmin, vmax);
}
