// ── ABOUT ────────────────────────────────────────────────────────
// Stores UNIQUE elements in sorted (ascending) order
// insert / find / erase → O(log n)
 
// ── CREATE & INSERT ──────────────────────────────────────────────
set<string> s;
s.insert("abc");                         // O(log n)
s.insert("zkd");
s.insert("ijk");
s.insert("abc");                         // duplicate → ignored
// s = {"abc", "ijk", "zkd"}            // always sorted
 
// ── SIZE & ITERATE ───────────────────────────────────────────────
cout << s.size();
for (auto &i : s)
    cout << i << " ";
 
// ── FIND ─────────────────────────────────────────────────────────
auto it = s.find("zkd");                 // O(log n) → returns iterator
if (it != s.end())
    cout << *it;                         // "zkd"
 
// ── ERASE ────────────────────────────────────────────────────────
s.erase("ijk");                          // by value  O(log n)
s.erase(it);                             // by iterator
 
// ── MAX ELEMENT ──────────────────────────────────────────────────
auto last = --s.end();                   // IMPORTANT: last element
cout << *last;
 
// ── COUNT (check existence) ──────────────────────────────────────
if (s.count("abc"))                      // 0 or 1 (unique set)
    cout << "exists";