// ── ABOUT ────────────────────────────────────────────────────────
// sort(start, end)         → sorts [start, end)  O(n log n)
// sort(start, end, cmp)    → custom comparator
 
// ── ARRAY ────────────────────────────────────────────────────────
int arr[] = {4, 5, 2, 25, 7, 8};
int n = 6;
 
sort(arr, arr + n);                      // full array
sort(arr + 2, arr + n);                  // from index 2 to end
 
// ── VECTOR ───────────────────────────────────────────────────────
vector<int> v = {4, 5, 2, 1, 7, 9};
sort(v.begin(), v.end());                // ascending
sort(v.rbegin(), v.rend());              // descending
 
// ── PAIR (default) ───────────────────────────────────────────────
vector<pair<int,int>> vp = {{4,3}, {5,5}, {5,3}, {25,6}, {5,9}, {8,5}};
sort(vp.begin(), vp.end());              // by first → ties by second
// {4,3} {5,3} {5,5} {5,9} {8,5} {25,6}
 
// ── CUSTOM COMPARATOR (function) ─────────────────────────────────
bool cmp(pair<int,int> a, pair<int,int> b) {
    if (a.first != b.first)
        return a.first < b.first;        // sort by first ascending
    return a.second > b.second;          // ties → second descending
}
sort(vp.begin(), vp.end(), cmp);
 
// ── CUSTOM COMPARATOR (lambda) ────────────────────────────────────
sort(vp.begin(), vp.end(), [](auto &a, auto &b) {
    return a.second < b.second;          // sort by second ascending
});