library

Some useful algorithms for competitive programming

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
template<typename BidirectionalIterator> // Coordinate compression
void compress(BidirectionalIterator first, BidirectionalIterator last) {
    vector<pair<BidirectionalIterator, int>> tmp;
    for (auto it = first; it != last; ++it) tmp.emplace_back(*it, it-first);
    sort(begin(tmp), end(tmp));
    for (auto it = begin(tmp); it != end(tmp); ++it) (first+it->s) = it-begin(tmp);
}