// Inserta las mismas 6 claves en todos los órdenes posibles y cuenta qué altura sale.
#include <algorithm>
#include <iostream>
#include <map>
#include <vector>

#include "bst_set.h"

int main() {
    std::vector<int> keys = {1, 3, 4, 5, 7, 8};
    std::map<int, int> orders_with_height;
    int total = 0;
    do {
        BstSet<int> tree;
        for (int key : keys) {
            tree.insert(key);
        }
        orders_with_height[tree.height()]++;
        total++;
    } while (std::next_permutation(keys.begin(), keys.end()));

    std::cout << "ordenes: " << total << "\n";
    for (const auto& [height, count] : orders_with_height) {
        std::cout << "altura " << height << ": " << count << " ordenes\n";
    }
    return 0;
}
