Advertisement
TheKernel

Untitled

May 21st, 2022
752
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2. #include <fstream>
  3. #include <set>
  4.  
  5. class BSequence
  6. {
  7.     int maximum;
  8.     std::set<int> ascendingHalf;
  9.     std::set<int, std::greater<int>> descendingHalf;
  10.  
  11. public:
  12.     BSequence(std::string fileName)
  13.     {
  14.         std::ifstream fin(fileName);
  15.  
  16.         int nr1, nr2;
  17.         bool ascending = true;
  18.  
  19.         fin >> nr1;
  20.  
  21.         while (fin >> nr2)
  22.         {
  23.             if (nr1 > nr2)
  24.             {
  25.                 if (ascending)
  26.                     maximum = nr1, ascending = false;
  27.                 else if (ascendingHalf.find(nr1) != ascendingHalf.end())
  28.                     descendingHalf.insert(nr1);
  29.             }
  30.             else
  31.                 ascendingHalf.insert(nr1);
  32.  
  33.             nr1 = nr2;
  34.         }
  35.  
  36.         if (ascending)
  37.             maximum = nr1;
  38.         else
  39.             descendingHalf.insert(nr1);
  40.  
  41.         fin.close();
  42.     }
  43.  
  44.     bool insert(int nr)
  45.     {
  46.         if (nr == maximum)
  47.             return false;
  48.  
  49.         if (ascendingHalf.find(nr) == ascendingHalf.end())
  50.             ascendingHalf.insert(nr);
  51.         else if (descendingHalf.find(nr) == descendingHalf.end())
  52.             descendingHalf.insert(nr);
  53.         else
  54.             return false;
  55.  
  56.         return true;
  57.     }
  58.  
  59.     void print()
  60.     {
  61.         for (int nr : ascendingHalf)
  62.             std::cout << nr << " ";
  63.         std::cout << maximum << " ";
  64.         for (int nr : descendingHalf)
  65.             std::cout << nr << " ";
  66.         std::cout << std::endl;
  67.     }
  68. };
  69.  
  70. int main()
  71. {
  72.     BSequence bs("input.txt");
  73.  
  74.     std::cout << "Initial sequence: ";
  75.     bs.print();
  76.  
  77.     int nrOperations;
  78.     std::cout << "Number of operations: ";
  79.     std::cin >> nrOperations;
  80.  
  81.     for (int i = 0; i < nrOperations; i++)
  82.     {
  83.         int val;
  84.         std::cout << "Insert value: ";
  85.         std::cin >> val;
  86.  
  87.         bool wasInserted = bs.insert(val);
  88.  
  89.         if (wasInserted)
  90.             std::cout << "Inserted" << val << "!\n";
  91.         else
  92.             std::cout << "Coundn't be inserted!\n";
  93.  
  94.         bs.print();
  95.     }
  96.  
  97.     return 0;
  98. }
Advertisement
RAW Paste Data Copied
Advertisement