// Paso 6, con trie: busca lugares por prefijo y da su nodo del mapa.
// Uso: places calles.tsv prefijo [cuantos]
#include <cstdlib>
#include <iostream>
#include <string>
#include <utility>
#include <vector>

#include "map_file.h"
#include "trie.h"

int main(int argc, char* argv[]) {
    if (argc < 3) {
        std::cerr << "uso: places calles.tsv prefijo [cuantos]\n";
        return 2;
    }
    PlaceTrie trie;
    for (const Street& street : read_streets(argv[1])) {
        trie.insert(street.name, street.node);
    }
    std::size_t limit = argc > 3 ? static_cast<std::size_t>(std::atoi(argv[3])) : 10;
    std::vector<std::pair<std::string, int>> found = trie.with_prefix(argv[2]);
    std::cout << found.size() << " lugares empiezan con \"" << argv[2] << "\"\n";
    for (std::size_t i = 0; i < found.size() && i < limit; i++) {
        std::cout << "  " << found[i].second << "  " << found[i].first << "\n";
    }
    return 0;
}
