Advertisement
Guest User

Untitled

a guest
Jan 20th, 2018
183
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <unordered_map>
  4. #include <queue>
  5.  
  6. int main()
  7. {
  8.     std::unordered_map<std::string, std::unordered_map<std::string, std::string> > data;
  9.     std::string main_key, main_value, line, key, value;
  10.  
  11.     std::cin >> main_key;
  12.  
  13.     std::getline(std::cin >> std::ws, line);
  14.     while (line != "[queries]")
  15.     {
  16.         std::queue<std::string> elements;
  17.         bool main_key_found = false;
  18.  
  19.         std::stringstream ss(line);
  20.  
  21.         while (ss && (ss >> std::ws >> key >> std::ws >> value))
  22.         {
  23.             if (key == main_key)
  24.             {
  25.                 main_value = value;
  26.                 main_key_found = true;
  27.             }
  28.             else
  29.             {
  30.                 elements.push(key);
  31.                 elements.push(value);
  32.             }
  33.         }
  34.  
  35.         if (main_key_found)
  36.         {
  37.             while (!elements.empty())
  38.             {
  39.                 key = elements.front();
  40.                 elements.pop();
  41.                 value = elements.front();
  42.                 elements.pop();
  43.  
  44.                 if (data[main_value].find(key) == data[main_value].end())
  45.                 {
  46.                     data[main_value][key] = value;
  47.                 }
  48.                 else
  49.                 {
  50.                     data[main_value][key] += " " + value;
  51.                 }
  52.             }
  53.         }
  54.  
  55.         std::getline(std::cin >> std::ws, line);
  56.     }
  57.  
  58.     std::getline(std::cin >> std::ws, line);
  59.     while (line != "end")
  60.     {
  61.         std::stringstream ss(line);
  62.         ss >> std::ws >> key >> std::ws >> value;
  63.  
  64.         if (data.find(key) == data.end())
  65.         {
  66.             std::cout << "[not found]";
  67.         }
  68.         else if (data[key].find(value) != data[key].end())
  69.         {
  70.             std::cout << data[key][value];
  71.         }
  72.  
  73.         std::cout << std::endl;
  74.         std::getline(std::cin >> std::ws, line);
  75.     }
  76.  
  77.     return 0;
  78. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement