Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <map>
- #include <vector>
- #include <string>
- using namespace std;
- int main()
- {
- int Q;
- cin >> Q;
- map <int, vector<string>> buses;
- vector<string> current_bus_names;
- string stop_name;
- // делаем дополнительный map для поиска значения по ключу(наоборот нельзя) и переставляем местами значение и ключ, для использования функции find.
- map<vector<string>, int> reverse_buses;
- vector<string> temp;
- int k = 0; // счетчик для количества автобусов
- for (int i = 0; i < Q; ++Q)
- {
- int stop_count;
- cin >> stop_count;
- current_bus_names.clear(); // очистка вектора для записи последующих названий остановок
- for (int i = 1; i <= stop_count; ++i)
- {
- cin >> stop_name;
- current_bus_names.push_back(stop_name);
- }
- for (auto item : buses)
- {
- temp.clear();
- for (auto names : item.second)
- {
- temp.push_back(names);
- }
- reverse_buses.emplace(temp, item.first);
- }
- if (reverse_buses.find(current_bus_names) != reverse_buses.end())
- {
- k++;
- buses[k] = current_bus_names;
- cout << "New bus " << k << endl;
- }
- else
- {
- cout << "Already exists for" << reverse_buses.find(current_bus_names)->second << endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement