fork download
  1. #include <iostream>
  2. #include <ext/pb_ds/tree_policy.hpp>
  3. #include <ext/pb_ds/assoc_container.hpp>
  4.  
  5. using namespace std;
  6. using namespace __gnu_pbds;
  7.  
  8. // Define ordered set (sorted in ascending order)
  9. typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> ordered_set;
  10.  
  11. // Function to erase an element from the ordered set
  12. void Erase(ordered_set& s, int val) {
  13. auto it = s.find(val);
  14. if (it != s.end()) {
  15. s.erase(it);
  16. }
  17. }
  18.  
  19. int main() {
  20. ordered_set s;
  21.  
  22. // Insert elements
  23. s.insert(10);
  24. s.insert(20);
  25. s.insert(30);
  26. s.insert(40);
  27. s.insert(50);
  28.  
  29. // Print elements
  30. cout << "Elements in ordered set: ";
  31. for (auto x : s) {
  32. cout << x << " ";
  33. }
  34. cout << "\n";
  35.  
  36. // Find the k-th smallest element (0-based index)
  37. int k = 2;
  38. cout << "The " << k << "-th smallest element: " << *s.find_by_order(k) << endl;
  39.  
  40. // Get the number of elements smaller than 25
  41. cout << "Number of elements smaller than 25: " << s.order_of_key(25) << endl;
  42.  
  43. // Erase an element
  44. Erase(s, 30);
  45. cout << "After erasing 30: ";
  46. for (auto x : s) {
  47. cout << x << " ";
  48. }
  49.  
  50. return 0;
  51. }
  52.  
Success #stdin #stdout 0s 5284KB
stdin
Standard input is empty
stdout
Elements in ordered set: 10 20 30 40 50 
The 2-th smallest element: 30
Number of elements smaller than 25: 2
After erasing 30: 10 20 40 50