// ── 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";