func_code_string: #include <bits/stdc++.h>   using namespace std;   pair<long long, long long> orderA[500005];   pair<long long, long long> orderB[500005];   void copyArray(int mBegin, int mEnd) {     for (int i = mBegin; i < mEnd; i++) {       orderA[i] = orderB[i];     }   }   void doMerge(int mBegin, int mMid, int mEnd) {     int i = mBegin, j = mMid;     for (int k = mBegin; k < mEnd; k++) {       if (i < mMid && (j >= mEnd || orderA[i].second <= orderA[j].second)) {         orderB[k] = orderA[i];         i++;       } else {         orderB[k] = orderA[j];         j++;       }     }   }   void splitMerge(int mBegin, int mEnd) {     if (mEnd - mBegin < 2) return;     int mMid = (mEnd + mBegin) / 2;     splitMerge(mBegin, mMid);     splitMerge(mMid, mEnd);     doMerge(mBegin, mMid, mEnd);     copyArray(mBegin, mEnd);   }   void mergeSort(int n) { splitMerge(0, n); }   int main() {     int N;     scanf( %d , &N);     for (int i = 0; i < N; i++) {       long long x, y;       scanf( %I64d %I64d , &x, &y);       orderA[i] = make_pair(x, y);     }     mergeSort(N);     long long current = 0;     int ans = 0;     for (int i = 0; i < N; i++) {       if (current < orderA[i].first) {         current = orderA[i].second;         ans++;       }     }     cout << ans <<   n ;     return 0;   }   